视图控制对象生命周期

2016-07-25  本文已影响37人  韩吉_
init-初始化程序
ViewController *vc = [[ViewController alloc] init];
NSLog(@"%d", 1);
viewDidLoad-加载视图
- (void)loadView {
    [super loadView];
    NSLog(@"%s", __FUNCTION__);
}
viewWillAppear-UIViewController对象的视图即将加入窗口时调用;
- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%s", __FUNCTION__);
}
viewWillAppear-UIViewController对象的视图即将加入到窗口时调用;
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"%s", __FUNCTION__);
}
viewDidAppear-UIViewController对象的视图已经加入到窗口时调用;
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"%s", __FUNCTION__);
}

viewWillDisappear-UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"%s", __FUNCTION__);
}

viewDidDisappear-UIViewController对象的视图已经消失、被覆盖或是隐藏时调用;

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    NSLog(@"%s", __FUNCTION__);
}

上述代码中使用了FUNCTION对当前所处位置的函数进行了打印, 根据打印出来的先后顺序来判断视图的生命周期的运行顺序。

1) - (void)viewDidLoad;

一个APP在载入时会先通过调用loadView方法或者载入IB中创建的初始界面的方法,将视图载入到内存中。然后会调用viewDidLoad方法来进行进一步的设置。通常,我们对于各种初始数据的载入,初始设定等很多内容,都会在这个方法中实现,所以这个方法是一个很常用,很重要的方法。

但是要注意,这个方法只会在APP刚开始加载的时候调用一次,以后都不会再调用它了,所以只能用来做初始设置。

2)- (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;

我们可以重写这个方法,对已经消失,或者被覆盖,或者已经隐藏了的视图做一些其他操作。

上一篇下一篇

猜你喜欢

热点阅读