zoukankan      html  css  js  c++  java
  • 画面跳转各方法调用的时机-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear、viewDidDisappear

    init:方法

    在init方法中实例化必要的对象(遵从LazyLoad思想)

    init方法中初始化ViewController本身


     

    loadView:方法

    这是当没有正在使用nib视图页面,子类将会创建自己的自定义视图层。绝不能直接调用。

    如果手工维护views,必须重载重写该方法。

    当view需要被展示而它却是nil时,viewController会调用该方法。

    loadView和IB构建view

    你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。 如果它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。

     

    viewDidLoad:方法

    在视图加载后被调用:

    如果是在代码中创建的视图加载器,他将会在loadView方法后被调用;

    如果是从nib视图页面输出,他将会在视图设置好后后被调用。

    重载重写该方法以进一步定制view

    在iPhone OS 3.0及之后的版本中,还应该重载重写viewDidUnload来释放对view的任何索引

    viewDidLoad后调用数据Model


    viewWillAppear: 方法
    Called when the view is about to made visible. Default does nothing
    视图即将可见时调用。默认情况下不执行任何操作


    viewDidAppear: 
    Called when the view has been fully transitioned onto the screen. Default does nothing
    视图已完全过渡到屏幕上时调用


    viewWillDisappear:
    Called when the view is dismissed, covered or otherwise hidden. Default does nothing
    视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作


    viewDidDisappear:
    Called after the view was dismissed, covered or otherwise hidden. Default does nothing
    视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作


     

    下面这个是引用的网上一个哥们的总结,链接:http://blog.csdn.net/weasleyqi/article/details/8090373

    执行顺序:

     从程序的log来看:

    2012-10-19 15:51:44.811inHyron[483:b903] init

    2012-10-19 15:51:54.081inHyron[483:b903] viewDidLoad

    2012-10-19 15:51:54.082inHyron[483:b903] viewVillAppear

    2012-10-19 15:51:54.084 inHyron[483:b903] viewDidAppear

    很明显,先执行init、然后执行viewDidLoad,然后是viewWillAppear最后是viewDidAppear,这样视图就创建好了,当视图消失或者被覆盖的时候:

    2012-10-19 15:54:14.557inHyron[483:b903] viewWillDisappear

    2012-10-19 15:54:14.558inHyron[483:b903] viewDidDisappear

    这样一来视图就消失了,当模拟内存警告的时候:

    2012-10-19 15:55:14.333inHyron[483:b903] Received simulated memory warning.

    2012-10-19 15:55:14.334inHyron[483:b903] viewWillUnload

    2012-10-19 15:55:14.335 inHyron[483:b903]viewDidUnload

    从log可以看出,当视图控制对象收到内存警告的时候,程序会执行viewWillUnload最后是执行viewDidUnload。

    这样,一套的流程就完成了.

    以上就是这个哥们的总结,链接:http://blog.csdn.net/weasleyqi/article/details/8090373

    其实当视图A切换到视图B的真正的流程并不是按上面的流程跑下来的,

    并不是A视图:1,viewWillDisappear 2,viewDidDisappear,然后B视图:3,viewDidLoad 4,viewVillAppear 5,viewDidAppear这样。

    正确的顺序流程应该是:

    1,B视图 viewDidLoad

    2,A视图 viewWillDisappear

    3,B视图 viewVillAppear

    4,A视图 viewDidDisappear

    5,B视图 viewDidAppear

    如图所示


  • 相关阅读:
    Java编程练习(四)——集合框架应用
    89. Gray Code (Java)
    加解密算法
    Cookie、Session和Token
    87. Scramble String (Java)
    51. N-Queens (JAVA)
    85. Maximal Rectangle (JAVA)
    84. Largest Rectangle in Histogram (JAVA)
    81. Search in Rotated Sorted Array II (JAVA)
    77. Combinations (JAVA)
  • 原文地址:https://www.cnblogs.com/lisen-lisen/p/4729605.html
Copyright © 2011-2022 走看看