pop到指定页面,崩溃

当我们想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];
    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值