【问题标题】:iOS 7 Storyboards Debug AdviceiOS 7 Storyboards 调试建议
【发布时间】:2014-04-03 20:34:59
【问题描述】:

我正在使用 Storyboards 和 iOS 7 开发 iPhone 应用程序。

出于某种原因,从屏幕推送到下一个需要 3 秒,我根本不知道如何调试它。

我知道这是一个非常笼统的问题,但可以就我应该注意什么或我需要使用哪些工具来改善用户体验提出建议。

在 2 个视图控制器中没有发生任何“重”。头文件中确实有一个协议,允许将数据发回。

任何帮助将不胜感激。

谢谢。

--

添加更多细节:

在我的故事板中。在视图 A 我有一个按钮。我从那个按钮拖到了视图 B 并创建了一个推送序列。 在视图 A 中我也有方法:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
     if([segue.identifier isEqualToString:@"page2topage3"]){
        FormPage3ViewController *controller = (FormPage3ViewController *)segue.destinationViewController;
        controller.userData = _userData;
        //This is for the delegate to pass back the array
        controller.delegate = self;
    }

}

【问题讨论】:

  • 你能展示一些相关的代码吗?你是如何触发 segue 的?
  • 当然 - 让我更新我的问题
  • 如果userData 不是很大,请尝试删除并重新创建segue。在没有大数据传输的情况下,我以前从未见过这个问题,但有时解决情节提要问题的唯一方法是删除并重新创建有问题的部分。
  • 我有一种感觉,可能是解决办法。这是一个 3 秒的等待,我真的认为这不是很好的体验。

标签: ios debugging instruments


【解决方案1】:

目标视图控制器可能需要很长时间才能实例化。在这种情况下, FormPage3ViewController。检查您的-init 方法。

如果不是这样,您最好使用 Instruments 来了解正在发生的事情。使用 cmd+i 从 Xcode 启动它。选择“时间分析器”。等待几秒钟,直到应用程序完全启动并运行导致 segue 执行的操作。您应该会看到如下内容:

segue 完成执行后,您可以告诉 Instruments 停止录制。之后,通过单击时间轴并使用检查范围按钮来选择感兴趣的区域,直到您看到如下内容:

确保您已激活扩展的详细信息视图。它是右侧的一个面板,可以通过点击红色标记的按钮来激活:

并选择列表的第一个线程:

在扩展的详细视图中,您应该会看到执行 segue 时发生的最重的堆栈跟踪,这应该让您对可能发生的事情有一个很好的了解。单击扩展详细信息中的黑色项目(您的代码)以查看线程列表的更多详细信息或双击直接进入代码行:

【讨论】:

  • 很棒的描述!非常感谢
【解决方案2】:

可能是透明元素太多。尝试人为地从元素中移除 Alpha 通道,这当然不是必需的。
在情节提要中设置“不透明”标志。

或为您的元素使用此代码:

[myLabel setOpaque:YES];

您还可以检查 sourceViewController 中时间戳之间的差异:willDissapear、didDissapear。而在destinationViewController:initWithCoder、viewDidLoad、viewWillAppear、viewDidAppear。它应该有助于找到消费操作。

【讨论】:

    猜你喜欢
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多