您的位置:首页 > 移动开发 > IOS开发

iOS 随意push,pop到任意控制器

2016-09-09 16:01 267 查看

主题思想:如A、B、C、D 四个视图控制器

想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,在从 C pop 的A

解决方法如下:

1.假如此时在 A 控制器下,想要到 push 到 B, 可以这样写
这时 
self.navigationController.viewControllers
 中按顺序含有 [A,B]2.此时已经到 B 控制器下了, 接下来是 push 到 D, 可以这样写
这时 
self.navigationController.viewControllers
 中按顺序含有 [A,B,D]接下来很重要,很重要,很重要:如何想从 D pop 到 C, 看数组[A,B,D] 中压根就没有C 该如何pop 到C呢?这时就需要对这个数组进行修改,将C 加入进去于是 你会如下写:
发现报错,这是因为
self.navigationController.viewControllers
 是不可变数组,没办法了,我们只好转换一下了:
此时再加入C 就容易多了,咦,聪明的你会发现从 D pop C 不能直接将 C直接 addObject;当然,我会这样做:
这时候 
tempMarr
 是这样的 [A,B,C,D], 可是 要想 从 C pop 到 A ,数组中就不能有 B就需要 将
tempMarr
 变成 [A,C,D] ,至于怎么变,你比我懂得多,懂得思考的同学会发现 这时的
self.navigationController.viewControllers
 依然是 [A,B,D], 不用急,不用怕
navigationController
 有这样一个方法, 可以搞定,如下:
有的同学会说,这不是直接把 B 替换 成 C 吗看上去是这样,可是跳转的时机,时机,时机重要的事情说三遍,还有视图的切换,切换,切换此时还在 B 控制器中,这些处理过程都是在 B 中处理的 , 也必须是 B 执行了 push 到 D 方法后,也就是说
之后 进行的 数组处理;

附加代码:

在B 控制器中处理:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐