UIViewController的生命周期
来源:互联网 发布:java专业入门课程 编辑:程序博客网 时间:2024/06/05 14:40
测试环境 xcode 6.3 Storyboard ios 8.3
测试详情:由一个controller push到下一个controller 然后返回 控制器中方法的执行。(controller 1 c1 controlelr 2 c2)
C1为程序入口
测试结果:
执行顺序:
1. C1 initWithCoder: 初始化方法;
2. C1 loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
3.C1 viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
4. C1 viewWillAppear: 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
5. C1 viewDidAppear: 视图已在屏幕上渲染完成
触发push事件后
6. C2 initWithCoder: 初始化方法;
7. C2 loadView 从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
8.C2 viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
9.C1 viewWillDisappear: 视图将被从屏幕上移除之前执行
10.C2 viewWillAppear: 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
11. C1 viewDidDisappear: 视图已经被从屏幕上移除,用户看不到这个视图了
12.C2 viewDidAppear: 视图已在屏幕上渲染完成
点击返回跟视图控制器后:
13. C2 viewWillDisappear: 视图将被从屏幕上移除之前执行
14. C1 viewWillAppear: 视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
15 C2 viewDidDisappear: 视图已经被从屏幕上移除,用户看不到这个视图了
16 C1 viewDidAppear: 视图已在屏幕上渲染完成
其中Viewcontroller 为C1 TestViewController为 C2.
- (void)viewDidLoad;
一个APP在载入时会先通过调用loadView方法或者载入IB中创建的初始界面的方法,将视图载入到内存中。然后会调用viewDidLoad方法来进行进一步的设置。通常,我们对于各种初始数据的载入,初始设定等很多内容,都会在这个方法中实现,所以这个方法是一个很常用,很重要的方法。
但是要注意,这个方法只会在APP刚开始加载的时候调用一次,以后都不会再调用它了,所以只能用来做初始设置。
- (void)viewWillAppear:(BOOL)animated;
系统在载入所有数据后,将会在屏幕上显示视图,这时会先调用这个方法。通常我们会利用这个方法,对即将显示的视图做进一步的设置。例如,我们可以利用这个方法来设置设备不同方向时该如何显示。
另外一方面,当APP有多个视图时,在视图间切换时,并不会再次载入viewDidLoad方法,所以如果在调入视图时,需要对数据做更新,就只能在这个方法内实现了。所以这个方法也非常常用。
- (void)viewDidAppear:(BOOL)animated;
有时候,由于一些特殊的原因,我们不能在viewWillApper方法里,对视图进行更新。那么可以重写这个方法,在这里对正在显示的视图进行进一步的设置。
- (void)viewWillDisappear:(BOOL)animated;
在视图变换时,当前视图在即将被移除、或者被覆盖时,会调用这个方法进行一些善后的处理和设置。
由于在IOS4之后,系统允许将APP在后台挂起,所以在按了Home键之后,系统并不会调用这个方法,因为就这个APP本身而言,APP显示的view,仍是挂起时候的view,所以并不会调用这个方法。
- (void)viewDidDisappear:(BOOL)animated;
我们可以重写这个方法,对已经消失,或者被覆盖,或者已经隐藏了的视图做一些其他操作。
Phone开发必不可少的要用到这两个方法。 他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢?
viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用。
loadView 此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式创建view的时候用到。 如:
-
- - ( void ) loadView {
-
UIView *view = [ [ UIView alloc] initWithFrame:[ UIScreen - mainScreen] .applicationFrame] ;
-
[ view setBackgroundColor:_color] ; -
self.view = view ; - }
你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。如果它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- IOS-UIViewController的生命周期
- UIViewController的生命周期图
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- UIViewController的生命周期
- ios UIViewController的生命周期
- IOS-UIViewController的生命周期
- UIViewController的生命周期
- HDU 1002 A + B Problem II
- UIWebView 清除缓存
- windows8 下基于vs2013开发环境CGAL配置(cmake,cgal,qt.boost,qglviewer)教程
- 【黑马程序员】equals和==的区别
- Python学习-语录
- UIViewController的生命周期
- uestc 1221 Ancient Go
- 数式の演算子と関数
- 【转载】Log4j之高级配置
- EventBus使用详解(一)——初步使用EventBus
- Spring与Velocity
- Spring整合JMS(一)——基于ActiveMQ实现
- mysql 错误解决方案-积累
- PHP防盗链文件下载的基本思想