pushViewController非常慢

时间:2014-09-09 22:37:10

标签: ios objective-c

什么可能导致pushViewController非常慢? (新视图显示需要30 +秒)

基本上,我做的是这样的事情:

SecondViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"correctID"];
vc.something = something;
[self.navigationController pushViewController:vc animated:YES];
CLS_LOG(@"Pushed Controller...");

并且我在第二个视图控制器内的viewdidload开头记录。 我没有继承其他方法。

推送控制器......和viewdidload的下一个日志之间存在很大的延迟。

你会如何调试?

我已经尝试过使用TimeProfiler,但显然它没有显示任何内容。

3 个答案:

答案 0 :(得分:19)

之前有过类似的问题,请尝试以下

dispatch_async(dispatch_get_main_queue(), ^{
    // your navigation controller action goes here
});

答案 1 :(得分:4)

迪诺的回答挽救了我的生命。他得到了我的支持。我只是为现代快速用户添加此功能。

     DispatchQueue.main.async {
          self.navigationController?.pushViewController(vc, animated: true)
     }

答案 2 :(得分:0)

设置背景颜色,例如vc.view.backgroundColor = .white为我解决了这个问题。