在NavigationController中,调用pushViewController可以将界面推到指定的界面,调用popToViewController可以返回上层界面,可是它的实现原理是什么?

好吧,说到原理,就要看源码,可是源码被封装了,看不到,那就不谈原理,那就谈谈 它为什么知道你pop的是上一层的viewcontroller,而不是别的呢?在Navigationcontroller的属性列表中,我们可以发现一个属性:viewControllers ,对,就是它! 它将你所有push的viewcontroller 全部装进,然后通过索引来找到你要pop的viewcontroller。

如果当前界面在viewControllers 中的索引是 3,那么popToViewController(返回上层界面) 只是 拿到索引是2的vc。

知道这个原理,那么我们不就可以为所欲为的返回到指定界面了吗?

来一个返回2级界面的代码:

 //当前vc 在数组中的索引
NSInteger index=[kAPPDELEGATE.navigationController.viewControllers indexOfObject:self];
//退出成功 获取素组中 当前索引-2 的viewcontroller,然后popTo指定vc
[kAPPDELEGATE.navigationController popToViewController:[kAPPDELEGATE.navigationController.viewControllers getObjectAtIndex:index-] animated:YES];

最新文章

  1. Ubuntu apt 常用命令
  2. ContextMenuStrip 类
  3. 关于SVN链接服务器Unable to connect to a repository at URL*报错问题
  4. Xamarin.iOS Unified API 注意要点
  5. codeforces E. Famil Door and Roads 期望
  6. angular 国际化
  7. 《Programming with Objective-C》
  8. 烂泥:KVM安装centos6.5系统
  9. IIS与Apache共用80端口方法[试用成功]
  10. bzoj3275: Number
  11. Android获取系统cpu信息,内存,版本,电量等信息
  12. java 钱币的单位转换
  13. 解读为什么有符号的char可表示范围是-128~+127
  14. 自定义清除重复uses-permission申明的AS插件
  15. qt5.5.0成功移植到IMX6中
  16. const 相关知识 const和指针、const和引用
  17. Zabbix系列之七——添加磁盘IO监测
  18. MS SQL自定义函数IsPositiveInteger
  19. 【AtCoder】【思维】【图论】Splatter Painting(AGC012)
  20. jmeter用Windows电脑分布式部署

热门文章

  1. cisco vpn client for win10 x64 setup package
  2. C++ volatile的作用
  3. poj 3009 Curling 2.0( dfs )
  4. Java多线程性能优化
  5. 函数fseg_set_nth_frag_page_no
  6. bzoj3156
  7. Hessian介绍
  8. 15、NDK开发初步
  9. DDraw绘图
  10. HDU 2196-Computer(树形dp)