pushViewController 与 presentViewController 与 TabBarController 之间切换VC
2015-09-15 01:06
543 查看
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是不会触发该方法的
相关文章推荐
- ObjectiveC中的self.变量和_变量的区别
- 欢迎使用CSDN-markdown编辑器
- 【黑马程序员】Objetive-C 对象详解 一
- objetive-C中 self 与super 精解
- CLang之简单介绍
- OC自学的第二天
- ios开发-UIView和UILabel的学习
- iOS学习资源汇总
- Objective-C - 类的静态常量
- iOS7新JavaScriptCore框架介绍
- 10大iOS开发者最喜爱的库
- MKNetworkKit的介绍
- Objective-C里字符串NSString过滤HTML标签的方法
- iOS 基础学习(8)----iOS 新建一个对象
- IOS与OC面试题
- iOS常考9大题
- Effective Objective-C 2.0 第7条:在对象内部尽量访问实例变量
- Objetive-C的随堂笔记
- Objective-C中对数据文件的写入保存和读出数据的几种方法
- Objective-C中对文件的处理