iOS实现先无动画pop再push,替换当前控制器

iOS实现先无动画pop再push,替换当前控制器

iOS开发中会遇到添加成功,发送成功……类似情况,需要先将push前的页面移除调。如果直接调用pop,立刻去push。如果这两个命令写在同一个控制器中,则会发现push根本没有被执行……因为pop已经将该控制器移除,push根本没有机会执行。也可以在上一个控制器通过代理/通知/闭包等操作——没有亲测,感觉麻烦。


所以就选择了下面的方法,先移除路由栈中当前控制器,再新增新的控制器,最后赋值。

废话不多说,直接上代码:
         // 新建将要push的控制器
        NewViewController *newVC = [[NewViewController alloc] init];

         // 获取当前路由的控制器数组
        NSMutableArray *vcArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];

        // 打印当前路由的控制器数组
        NSLog(@"==the vcArray is %@", vcArray);

        // 获取档期控制器在路由的位置
        int index = (int)[vcArray indexOfObject:self];

        // 移除当前路由器
        [vcArray removeObjectAtIndex:index];

        // 添加新控制器
        [vcArray addObject: newVC];

        // 打印新增后的控制器数组
        NSLog(@"==the vcArray is %@", vcArray);

        // 重新设置当前导航控制器的路由数组
        [self.navigationController setViewControllers:vcArray animated:YES];

        // over 有其他好方法欢迎一起学习。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值