我正在使用Storyboard和iOS 7开发iPhone应用程序。
出于某种原因,从屏幕到下一个屏幕的推送需要3秒钟,我根本无法弄清楚如何调试它。
我知道这是一个非常通用的问题,但可以就我应该注意什么或者需要使用哪些工具来改善用户体验提出建议。
2个视图控制器中没有发生任何“重”现象。在头文件中实际上有一个允许发回数据的协议。
任何帮助都将不胜感激。
谢谢。
-
添加更多细节:
在我的故事板中。在视图A我有一个按钮。从那个按钮我拖动到B视图并创建了推送segue。 在视图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;
}
}
答案 0 :(得分:1)
目标视图控制器可能需要很长时间才能实例化。在这种情况下,
FormPage3ViewController
。检查您的-init
方法。
如果不是这样,最好找出发生的事情就是使用仪器。使用cmd+i
从Xcode启动它。选择“Time Profiler”。等待几秒钟,直到应用程序完全启动并运行导致segue执行的操作。你应该看到这样的东西:
一旦segue完成执行,您可以告诉Instruments停止录制。之后,通过单击时间轴并使用检查范围按钮选择感兴趣的区域,直到您有类似的内容:
确保您已激活扩展详细信息视图。右侧的面板可以通过单击红色标记的按钮激活:
然后选择列表的第一个帖子:
在扩展详细信息视图中,您应该看到执行segue时发生最重的堆栈跟踪,这应该可以让您了解可能发生的情况。单击扩展详细信息中的黑色项目(您的代码)以查看线程列表中的更多详细信息,或双击以直接访问代码行:
答案 1 :(得分:0)
可能是太多透明元素。尝试人为地从元素中删除alpha通道,这当然不是必需的 在故事板中设置标记“opaque”
或者将此代码用于您的元素:
[myLabel setOpaque:YES];
您还可以检查sourceViewController中的时间戳之间的差异:willDissapear,didDissapear。并在destinationViewController中:initWithCoder,viewDidLoad,viewWillAppear,viewDidAppear。它应该有助于找到消费操作。