现在需要在界面ViewDidLoad执行时获取数据,根据获取到的数据对界面进行跳转。
- (void)viewDidLoad {
[self fetchData:^{
if(self.pushViewController) {
//如果需要跳转到另一界面
[self.navigationController pushViewController:newController animated:YES];
}
}];
}
如果直接这么写,会发现即使执行了pushViewController界面也不会跳转。出现问题的原因有两个:
- 界面跳转操作没有在主线程中执行
- 因为跳转操作是在
viewDidLoad
中执行,有可能界面跳转时自身(self)还没有初始化完全,这时跳转也会失败
综上,代码修改一下即可成功跳转
- (void)viewDidLoad {
[self fetchData:^{
if(self.pushViewController) {
//如果需要跳转到另一界面,延迟0.5s再跳转
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.navigationController pushViewController:newController animated:YES];
});
}
}];
}