美文网首页
视图控制对象生命周期

视图控制对象生命周期

作者: 韩吉_ | 来源:发表于2016-07-25 09:09 被阅读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__);
    }
    
    • loadViewviewDidLoad 在一个VC的生命周期中只走一次
    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;

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

    相关文章

      网友评论

          本文标题:视图控制对象生命周期

          本文链接:https://www.haomeiwen.com/subject/vyegjttx.html