iOS导航控制器pop回之前没有的页面

之前写过一个文章  写的是页面跳转中 A-B-C  遇到从C直接pop回A的情况   实际开发中可能遇到A-B-C然后从C pop到D的情况    这种情况可以通过操作navigationController.viewControllers这个数组解决 
举个例子 我有三个ViewController的类  分别为MainVC  AVC  BVC  

iOS导航控制器pop回之前没有的页面_第1张图片


然后在MainVC的touchBegan方法写上 push到BVC的页面  

iOS导航控制器pop回之前没有的页面_第2张图片


然后我想从BVC的页面直接返回AVC的页面 因为我们是从mainVC过去的  所以在BVC的时候我们打印下导航控制器的viewcontrollers

没什么问题  然后我们想从BVC直接返回AVC的话 就需要在这个数组中插入AVC的对象到MainViewController和BViewController之间  所以我们需要拿到导航控制器的viewcontrollers  然后插入AVC的对象 

这时候我们在打印下


实现的效果就是从 push阶段: MainVC - BVC
                                   pop阶段 : BVC - AVC - MainVC


这就可以实现pop到之前没有的页面了  如果不需要从AVC返回MainVC  直接在导航控制器的viewcontrollers 移除MainVC即可  


PS:我这里是写在touchBegan方法里  项目中应该要写在返回按钮的事件里  另外侧滑也需要处理下  建议不要在返回方法里操作导航控制器的viewcontrollers   直接在页面走完viewdidload就去操作导航控制器的viewcontrollers。

你可能感兴趣的:(iOS导航控制器pop回之前没有的页面)