ViewController是iOS開發(fā)中非常重要的一部分,通常把它分為兩種了類別,一種用來(lái)顯示內(nèi)容,如:UIViewController,還有一種主要用來(lái)管理視圖控制器,如:UINavigationController, UITabBarController廊蜒。接下來(lái)通過(guò)一個(gè)簡(jiǎn)單的工程來(lái)了解ViewController的生命周期。
// 加載視圖
- (void)loadView {
[super loadView];
NSLog(@"ViewController加載視圖%s", __FUNCTION__);
}
// 視圖完成加載
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor yellowColor];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(barButtonClicked:)];
NSLog(@"ViewController視圖完成加載%s", __FUNCTION__);
}
// 視圖將要出現(xiàn)時(shí), 就會(huì)調(diào)用(只有一部分出現(xiàn)就會(huì)觸發(fā))
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"ViewController視圖將要出現(xiàn)%s", __FUNCTION__);
}
// 視圖完全出現(xiàn)時(shí), 就會(huì)調(diào)用
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"ViewController視圖完全出現(xiàn)%s", __FUNCTION__);
}
// 視圖將要消失時(shí), 就會(huì)調(diào)用(只有一部分消失就會(huì)觸發(fā))
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"ViewController視圖將要消失%s", __FUNCTION__);
}
// 視圖完全消失, 就會(huì)調(diào)用
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"ViewController視圖完全消失%s", __FUNCTION__);
}
- 在每一個(gè)方法中進(jìn)行了打印,運(yùn)行后結(jié)果如下
- 通過(guò)點(diǎn)擊導(dǎo)航的左按鈕,push到FirstViewController,同時(shí)在FirstViewController也重寫這些方法并打印.
從打印結(jié)果可以發(fā)現(xiàn), FirstViewController的loadView viewDidLoad與viewWillAppear:方法在ViewController的viewWillDisappear:與viewDidDisappear:之間執(zhí)行。
- 之后從FirstViewController pop回到ViewController,可以看到FirstViewController的viewWillDisappear:與ViewController的viewWillAppear方法同時(shí)執(zhí)行, viewDidDisappear:與viewDidAppear:同時(shí)執(zhí)行
- 如果對(duì)ViewController的生命周期還不夠清楚, 可以在工程中重寫這些方法并打印內(nèi)容,便能加深印象备典。