iOS视图控制器(ViewController)生命周期

ViewController是iOS开发中非常重要的一部分,通常把它分为两种了类别,一种用来显示内容,如:UIViewController,还有一种主要用来管理视图控制器,如:UINavigationController, UITabBarController。接下来通过一个简单的工程来了解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__);
}
// 视图将要出现时, 就会调用(只有一部分出现就会触发)
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    NSLog(@"ViewController视图将要出现%s", __FUNCTION__);
}
// 视图完全出现时, 就会调用
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"ViewController视图完全出现%s", __FUNCTION__);
}
// 视图将要消失时, 就会调用(只有一部分消失就会触发)
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"ViewController视图将要消失%s", __FUNCTION__);
}
// 视图完全消失, 就会调用
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    NSLog(@"ViewController视图完全消失%s", __FUNCTION__);
    
}
  • 在每一个方法中进行了打印,运行后结果如下
iOS视图控制器(ViewController)生命周期_第1张图片
2172ADA7-D320-4269-97F2-5F0DBAB9F8B5.png
  • 通过点击导航的左按钮,push到FirstViewController,同时在FirstViewController也重写这些方法并打印.
iOS视图控制器(ViewController)生命周期_第2张图片
CA1E211E-C7F4-4E68-82DA-9B9C5BF28247.png

从打印结果可以发现, FirstViewController的loadView viewDidLoad与viewWillAppear:方法在ViewController的viewWillDisappear:与viewDidDisappear:之间执行。

  • 之后从FirstViewController pop回到ViewController,可以看到FirstViewController的viewWillDisappear:与ViewController的viewWillAppear方法同时执行, viewDidDisappear:与viewDidAppear:同时执行
iOS视图控制器(ViewController)生命周期_第3张图片
B9A884B1-9503-436A-93B3-ED852E02F8A2.png
  • 如果对ViewController的生命周期还不够清楚, 可以在工程中重写这些方法并打印内容,便能加深印象。

你可能感兴趣的:(iOS视图控制器(ViewController)生命周期)