之前写过一个文章 写的是页面跳转中 A-B-C 遇到从C直接pop回A的情况 实际开发中可能遇到A-B-C然后从C pop到D的情况 这种情况可以通过操作navigationController.viewControllers这个数组解决
举个例子 我有三个ViewController的类 分别为MainVC AVC BVC
然后在MainVC的touchBegan方法写上 push到BVC的页面
然后我想从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。
网友评论