iOS如何随意的穿插跳跃,push来pop去
2016-09-07 08:35
330 查看
iOS如何随意的穿插跳跃,push来pop去?
主题思想:如A、B、C、D 四个视图控制器。
想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,在从 C pop 的A解决方法如下:
1.假如此时在 A 控制器下,想要到 push 到 B, 可以这样写[self.navigationController pushViewController: B :YES]; 这时 self.navigationController.viewControllers 中按顺序含有 [A,B]
2.此时已经到 B 控制器下了, 接下来是 push 到 D, 可以这样写
[self.navigationController pushViewController: D :YES];
这时self.navigationController.viewControllers中按顺序含有 [A,B,D],接下来很重要,如何想从 D pop 到 C, 看数组[A,B,D] 中压根就没有C 该如何pop 到C呢?
这时就需要对这个数组进行修改,将C 加入进去
于是 你会如下写:
[self.navigationController.viewControllers addObject:C];
发现报错,这是因为 self.navigationController.viewControllers 是不可变数组,没办法了,我们只好转换一下了:
NSMutableArray*tempMarr =[NSMutableArrayarrayWithArray:self.navigationController.viewControllers];
此时再加入C 就容易多了,咦,聪明的你会发现从 D pop C 不能直接将 C直接 addObject;
当然,我会这样做:
[tempMarr insertObject:C atIndex:tempMarr.count- 2];
这时候 tempMarr 是这样的 [A,B,C,D],可是 要想 从 C pop 到 A ,数组中就不能有 B
就需要 将 tempMarr 变成 [A,C,D] ,至于怎么变,你比我懂得多,
懂得思考的同学会发现 这时的 self.navigationController.viewControllers 依然是 [A,B,D], 不用急,不用怕 navigationController 有这样一个方法, 可以搞定,如下:
[self.navigationController setViewControllers:tempMarr animated:YES];
有的同学会说,这不是直接把 B 替换 成 C 吗?
看上去是这样,可是跳转的时机,时机,时机重要的事情说三遍,还有视图的切换,切换,切换。。。
此时还在 B 控制器中,这些处理过程都是在 B 中处理的 , 也必须是 B 执行了 push 到 D 方法后,也就是说
[self.navigationController pushViewController:D animated:YES];
之后 进行的 数组处理;
附加代码:
在B 控制器中处理:-(void)pushTest { [self.navigationController pushViewController:D animated:YES]; NSMutableArray*tempMarr = [NSMutableArrayarrayWithArray : self.navigationController.viewControllers]; [tempMarr insertObject:C atIndex:tempMarr.count- 2]; [tempMarr removeObject:self]; //此时 的self 就是指 B ,因为在 B 中呢 [self.navigationController setViewControllers:tempMarr animated:YES]; }
相关文章推荐
- iOS 如何随意的穿插跳跃,push来pop去
- iOS 如何随意的穿插跳跃,push来pop去
- iOS 如何随意的穿插跳跃,push来pop去
- iOS如何随意的穿插跳跃,push来pop去
- iOS控制器如何随意的穿插跳跃
- iOS 导航控制器如何随意push和pop 想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,在从 C pop 的A
- iOS 随意push,pop到任意控制器
- iOS中push与pop的随意切换
- iOS中用在导航控制器的转场动画(pop,push动画)制作
- iOS开发UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
- iOS如何从一个Storyboard Push到另一个Storyboard
- iOS 如何pop到指定页面
- 【iOS学习笔记 15-11-06】简单自定义navigationcontroller push和pop动画效果
- iOS 中push和pop到底系统做了些什么事
- 解决 iOS View Controller Push/Pop 时的黑影
- iOS Push & pop
- iOS陆先森开发随笔(四)tablview点击push到下一个页面,pop出来时位置下移问题
- IOS 实现系统push和pop的动画
- 解决 iOS View Controller Push/Pop 时的黑影
- iOS navigationcontroller pop 回到上一层视图 如何刷新