iSO控制器的生命周期

一个App有他的生命周期,同样App中的每个控制器也有他的生命周期,所谓控制器的生命周期,就是几个函数的调用顺序。这里,我们以storyboard创建控制器为例,说明说明一下控制器的生命周期。

initWithCoder

- (id)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super initWithCoder:aDecoder]) {
        NSLog(@initWithCoder Called);
    }
    return self;
}

viewDidLoad

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@viewDidLoad Called);
    // Do any additional setup after loading the view, typically from a nib.    
}

viewWillAppear

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@viewWillAppear Called);
}

viewDidAppear

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@viewDidAppear Called);
}

awakeFromNib

-(void)awakeFromNib{
    NSLog(@awakeFromNib Called);
}

viewWillLayoutSubviews

-(void)viewWillLayoutSubviews{
    NSLog(@viewWillLayoutSubviews Called);
}

viewDidLayoutSubviews

-(void)viewDidLayoutSubviews{
    NSLog(@viewDidLayoutSubviews Called);
}

然后在模拟器上运行,运行结果如下:

initWithCoder Called
awakeFromNib Called
viewDidLoad Called
viewWillAppear Called
viewWillLayoutSubviews Called
viewDidLayoutSubviews Called
viewDidAppear Called

所以,调用顺序为

  1. init函数(init;initWithFrame;initWithCoder;等)--初始化

  2. awakeFromNib--在loadView之前的工作放在这里

  3. viewDidLoad--注意,一个ViewController一个生命周期内这个函数只会调用一次

  4. viewWillAppear -- view将要出现,每次View消失再出现都会调用

  5. viewWillLayoutSubviews--将要对子视图进行布局

  6. viewDidLayoutSubivews--完成对子视图布局

  7. viewDidAppear--视图将要出现在屏幕上

  8. viewWillDisappear--View将要消失

  9. viewDidDisappear--View已经消失

这九个就是通常的视图控制器生命周期内函数调用顺序,一定要清楚什么样的代码应该放在视图控制器生命周期的什么位置

阅读更多
文章标签: 函数 app
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

iSO控制器的生命周期

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭