pushViewController 极慢
Posted
技术标签:
【中文标题】pushViewController 极慢【英文标题】:pushViewController Extremely slow 【发布时间】:2014-09-09 22:37:10 【问题描述】:什么可能导致 pushViewController 非常慢? (新视图出现需要 30 多秒)
基本上,我正在做这样的事情:
SecondViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"correctID"];
vc.something = something;
[self.navigationController pushViewController:vc animated:YES];
CLS_LOG(@"Pushed Controller...");
我在第二个视图控制器内的 viewdidload 开头记录。 我没有继承其他方法。
在 Pushed Controller... 和 viewdidload 的下一个日志之间有很大的延迟。
你会如何调试这个?
我已经尝试过使用 TimeProfiler,但显然它什么也没显示。
【问题讨论】:
我猜想您的 SecondViewController 的viewDidLoad
、viewWillAppear
或 viewDidAppear
方法中的某些内容需要很长时间。只是为了调试,尝试注释掉他们的内容,看看是什么导致了你的问题。
您确定在主线程中运行该代码吗?向我们展示更多背景信息。
【参考方案1】:
之前遇到过类似的问题,试试下面的
dispatch_async(dispatch_get_main_queue(), ^
// your navigation controller action goes here
);
【讨论】:
你说得对,成功了。我没有在主线程中运行该代码。【参考方案2】:迪诺的回答救了我的命。他得到了我的支持。我只是为现代 swift 用户添加这个。
DispatchQueue.main.async
self.navigationController?.pushViewController(vc, animated: true)
【讨论】:
这样做后还有人遇到问题吗?我是。但我认为这与推送到 WebKit 视图有关。非常沮丧。 @tjberte,您是否将推送设置为在网络调用返回之后或之前发生? 可能需要更多细节。 ***.com/questions/3852257/… 接近我所做的。我在第一次加载时加载了一个 UIView,然后用 viewDidAppear 加载了 WebView。【参考方案3】:设置背景颜色,例如vc.view.backgroundColor = .white
为我解决了这个问题。
【讨论】:
以上是关于pushViewController 极慢的主要内容,如果未能解决你的问题,请参考以下文章
解决UINavigationController在pushViewController时出现的"卡顿"问题