zoukankan      html  css  js  c++  java
  • 视图控制器生命周期--view ios

    1.直接上一个大概的图,给大家参考一下:

    2.

    viewWillAppear视图将要出现的时候调用

    viewDidApperar视图已经出现的时候调用

    viewWellDisappear视图将要消失的时候调用

    viewDidDisappear视图已经消失的时候调用
     
    3.下面说说真事环境的测试
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSLog(@"%s",__func__);
    }
    
    - (void)viewWillAppear:(BOOL)animated{
        NSLog(@"%s",__func__);
    }
    
    - (void)viewDidAppear:(BOOL)animated{
        NSLog(@"%s",__func__);
    }
    
    - (void)viewWillDisappear:(BOOL)animated{
        NSLog(@"%s",__func__);
    }
    
    - (void)viewDidDisappear:(BOOL)animated{
        NSLog(@"%s",__func__);
    }
    

    结果:我使用了上面的方法去做测试:

    分两种情况:

    第一种情况,只有一个视图控制器,且这段代码就是测试这个视图控制器,那么你进入程序到退出程序,会调用的方法有:

    2016-04-08 20:41:28.894 p[30307:311272] -[dd viewDidLoad]
    2016-04-08 20:41:28.894 p[30307:311272] -[dd viewWillAppear:]
    2016-04-08 20:41:29.397 p[30307:311272] -[dd viewDidAppear:]
    

     第二种情况,有两个视图控制器,且这段代码是去测试第二个控制器,从第一个控制器跳到第二个;这个时候会调用,注意:现在还没有退回到第一个:会调用的是和上面第一种情况一样;但如果回到第一个控制器,现在还会调用:

    2016-04-08 20:45:52.955 p[30556:314999] -[dd viewWillDisappear:]
    2016-04-08 20:45:53.461 p[30556:314999] -[dd viewDidDisappear:]
    

     为什么会出现上面的情况呢?

    网友的解答:可能是因为效率原因。第一个进去的viewController做这样的处理,避免再次构造。(不知道是不是这个原因,暂且记着)

  • 相关阅读:
    a*b高精度数组算法
    vscode plugins
    vscode keys
    vscode setting.jsonxx
    vscode settings.json
    webstorm keys
    vscode extensions
    vscode wechat settings.json
    vscode sass live compiler
    webstorm crack
  • 原文地址:https://www.cnblogs.com/williamliuwen/p/5366495.html
Copyright © 2011-2022 走看看