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已经消失

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值