iOS-控制器pop跳转

导语

导航控制器的viewControllers是一个栈,当push一个新控制器的时候,这个控制器就会进栈,且位于栈顶,而window每次显示的都是处于栈顶的控制器,而当pop的时候,被pop的控制器会从栈中移除,出栈,新的控制器就会成为栈顶的控制器,从而被window显示。根据这个原理,我们就可以在pop跳转的时候做一些改变。

pop一个新控制器

一般来说,我们的做法都是通过push来进入一个新的控制器,pop来返回上一个控制器,但是如果有需要通过pop来进入一个新的控制器的话,也可以做到。

navigationController的viewcontrollers是一个数组,当我们需要pop进入一个新的控制器的时候,只需要在当前的控制器的前面插入一个新的控制器即可。当pop的时候,当前控制器出栈,新控制器成为栈顶被显示。

代码如下:

InsertViewController *insertVC = [[InsertViewController alloc] init];

NSMutableArray *arrM = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];

[arrM insertObject:insertVC atIndex:self.navigationController.viewControllers.count - 1];

self.navigationController.viewControllers = arrM.copy;

[self.navigationController popViewControllerAnimated:YES];

pop到根控制器

[self.navigationController popToRootViewControllerAnimated:YES];

pop到指定控制器

UIViewController *vc = self.navigationController.viewControllers[1];

[self.navigationController popToViewController:vc animated:YES];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1> 什么是多控制器之间的跳转? 在一个 APP 中,会存在多个控制器,多个控制器的存在就会存在控制器的跳转问题....
    Brice_Zhao阅读 590评论 0 2
  • 1> 什么是多控制器之间的跳转?在一个 APP 中,会存在多个控制器,多个控制器的存在就会存在控制器的跳转问题....
    Hevin_Chen阅读 470评论 0 1
  • 之前一直有些疑惑,到底控制器的不同的展示形式有什么区别,今天就查了一些资料,做了一个小结。 在一个app中,会存在...
    可乐小子阅读 3,006评论 0 2
  • 又到了毕业说再见的时候,一幕幕场景就像一张张绚烂的剪贴画,串成了一部即将谢幕的电影。回想着初入山西师大的场景,回想...
    SUNSHINYzmf阅读 417评论 0 0
  • 时间就像轰隆隆的火车一直驶向远方,它没有等我们任何人。 昨天花菜说他心情不好,他说打牌输钱,股市不顺,硬盘损坏,M...
    紫菜姐阅读 209评论 0 2