我有标签栏控制器,其中一个标签我有3个容器视图控制器。只有一个可以呈现,其他的被删除。这些控制器的视图在xib中定义。
在其中一个容器中,我有表视图。
当我点击单元格时,我必须按下视图控制器。
我第一次启动应用程序时推送视图控制器时有延迟。在我回到桌面视图并再次推动之后,没有任何延迟。
我在新控制器的didSelectRowAtIndexPath
和viewDidLoad
中打印时间,延迟时间在2到4秒之间。
这是我用来推送视图控制器的代码:
EventDetailsViewController *eventDetailsVc = [[EventDetailsViewController alloc]init];
Events *event = [self.events objectAtIndex:indexPath.row];
eventDetailsVc.curentEvent = event;
NSDateFormatter *f2 = [[NSDateFormatter alloc] init];
[f2 setDateFormat:@"dd MMMM, hh:mm:ss.SSS a"];
NSLog([f2 stringFromDate:[NSDate date]]);
dispatch_async(dispatch_get_main_queue(), ^{
[self.navigationController pushViewController:eventDetailsVc animated:YES];
});
通常我在推送视图控制器时不使用dispatch_async
,但这是我发现的建议解决方案之一。我也试过self.parentViewController.navigationController
,结果相同。
我不知道该怎么办这个延迟,有人可以帮助我。
感谢。
答案 0 :(得分:1)
子视图控制器很可能是这里的问题。确保viewDidLoad / loadView不会启动任何昂贵的操作(例如从Internet下载数据)。
viewDidLoad& loadView仅在第一次显示视图控制器时触发一次。一旦设置了视图属性,这些方法就不会再触发了。
任何内容加载都应该在后台线程上完成(可能使用像AFNetworking这样的库),并且应该(通常)从viewWillAppear或viewDidAppear开始。