pop到指定页面,崩溃

来源:互联网 发布:联通3g是什么网络模式 编辑:程序博客网 时间:2024/06/01 08:06

当我们想pop到某个页面的时候,不正确的写法,会产生crash:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'

navigationController.viewControllers维护的是一个VC的stack,pop操作只能是这个stack中的VC元素。

如果这么写是会有问题的:

    SiteOrderViewController *vc = [[SiteOrderViewController alloc]init];   [self.navigationController popToViewController:vc animated:YES];
就算是stack里面有SiteOrderViewController的实例,也会crash,因为这个VC实例,并不是stack中的。

po self.navigationController.viewControllers<__NSArrayI 0x60000005d580>(<LoginViewController: 0x7f9c0b102cf0>,<SiteWallViewController: 0x7f9c0b10ecc0>,<SiteOrderViewController: 0x7f9c07701190>)

正确的写法应该是这样:

for (UIViewController *controller in self.navigationController.viewControllers) {   if ([controller isKindOfClass:[SiteOrderViewController class]]) {      SiteOrderViewController *vc =(SiteOrderViewController *)controller;      [self.navigationController popToViewController:vc animated:YES];    }}


0 0
原创粉丝点击