pushViewController 与 presentViewController 与 TabBarController 之间切换VC
来源:互联网 发布:udp编程bind函数的作用 编辑:程序博客网 时间:2024/06/06 01:46
pushViewController 与 presentViewController 与 TabBarController 之间切换VC
缘由
pushViewController、presentViewController以及TabBarController这3中方法、他们都可以用来切换ViewController。由于在写代码的时候,产生了一些疑惑,切换之前和切换之后的ViewController他们的生命周期是怎么样呢?于是,抱着这样的疑问去敲了一些代码实践一下,增加理解和记忆!代码可以从github中下载。
实践
从代码的输出日志可以看出来:
pushViewController
[vc1 pushViewController: vc11 ]
vc11 返回 vc1
presentViewController [vc2 presentViewController: vc22]
[vc22 dismiss] 返回vc2
TabbarController 从vc1切换到vc2
从vc2切换到vc1
总结:
1.当使用pushViewController或者presentViewController来切换视图控制器的时,vc的生命周期如下:(vc1代表,之前的vc,vc11代表之后的vc)
调用push或者present方法时,vc的生命周期方法调用顺序如下:
vc1:viewWillDisapper --->vc11:viewWillAppear --->vc1:viewDidDisappear --->vc11:viewDisAppear
点击返回或者调用dismiss方法,vc的生命周期方法调用顺序如下:
vc11:viewWillDisappear --->vc1:viewWillAppear --->vc11:viewDidDisappear --->vc1:viewDidAppear
点击TabBarController的tab来切换vc,vc的生命周期方法调用顺序如下:
vc2:viewWillAppear --->vc1:viewWillDisappear --->vc1:viewDidDisappear --->vc2:viewDidAppear
有上述可见,使用push或者present弹出、返回(撤销)视图,两者视图控制器的生命周期方法调用顺序都是一样的!而tabbar切换视图,视图控制器的生命周期方法调用顺序却和push或present不同!
区别主要体现在是: 1.push和present的方式:主动!先调用自身的viewWillDisappear
2.tabbar切换的方式:被动!目标vc先调用viewWillAppear之后,自身才去调用viewWillDisappear!
3.viewDidLoad方法,在调用push或者present方法的时候都会触发该方法,而在tabor之间切换vc是不会触发该方法的
- pushViewController 与 presentViewController 与 TabBarController 之间切换VC
- addChildViewController 与presentViewController、pushViewController跳转区别
- presentViewController 、pushViewController和presentModalViewController
- presentViewController 、pushViewController和presentModalViewController
- iOS 两个tabbarcontroller之间的切换
- pushViewController和presentViewController的区别
- 界面跳转之presentViewController、pushViewController
- tabbarcontroller切换
- iOS开发之presentViewController、presentModelViewController和pushViewController
- pushViewController and presentViewController are not working.
- 【转】自定义presentviewcontroller和pushviewcontroller转场动画
- iOS pushViewController 和 presentViewController的区别 详解
- iOS pushViewController 和 presentViewController的区别 详解
- PresentViewController切换界面
- PresentViewController切换界面
- PresentViewController切换界面
- PresentViewController切换界面
- presentViewController跳转动画切换
- groovy获取camel风格字符窜
- 我的2年苦逼狗血相亲经历(3)
- Dt大数据梦工厂王家林老师 Scala实战详解之第5讲 Scala数组操作实战详解
- html表单
- Dt大数据梦工厂王家林老师 Scala实战详解之第6讲 Map、Tuple、Zip实战解析
- pushViewController 与 presentViewController 与 TabBarController 之间切换VC
- flume入门教程
- Dt大数据梦工厂王家林老师 Scala实战详解之第7讲 Scala类的属性和对象私有字段实战详解
- 表格属性
- XHTML表单日记
- Dt大数据梦工厂王家林老师 Scala实战详解之第8讲 Scala主构造器、私有构造器、构造器重载实战详解
- Dt大数据梦工厂王家林老师 Scala实战详解之第9讲 Scala的内部类实战详解
- 中缀表达式转换成前缀表达式和后缀表达式的极其简单方法
- Dt大数据梦工厂王家林老师 Scala实战详解之第10讲 Scala单例对象、伴生对象实战详解