• viewController启动方法分析


    viewController启动方法分析

    转载:http://blog.csdn.net/dizzthxl/article/details/14170047

    首先理清楚一个概念:

    创建一个类和实例化一个类。 在IB中,孤零零的创建了一个.nib文件,没有和其他科被实例化的类有直接或间接关系的时候,这个类或这些类是没有机会被实例化的,所以这种情况只是通过IB创建了类,还没有实例化。真正的实例化,需要在Xcode用代码来读取这个.nib文件。

    方法调用顺序

    initWithNibName->LoadView->viewDidLoad->viewWillAppear->viewDidAppear->viewWillLayoutSubviews->viewDidLayoutSubviews

    下面是viewController中调用方法介绍:

    initWithNibName

    初始化UIViewController,执行关键数据初始化操作。
    注意在viewController中不管调用是init 还是initWithNibName,都会调用这个方法。
    注意这里不要做view相关操作,view在loadView方法中才初始化,这时loadView还未调用。

    如果是通过调用initWithNibName:bundle指定nib文件名初始化的话,ViewController会根据此nib来创建View。如果name参数为nil,则ViewController会通过以下两个步骤找到与其关联的nib:
    1)如果ViewController的类名以“Controller”结尾,例如ViewController的类名是MyViewController,则查找是否存在MyView.nib;
    2)找跟ViewController类名一样的文件,例如MyViewController,则查找是否存在MyViewController.nib

    LoadView

    方法用于创建一个UIViewController的界面View。
    无论IB,还是代码创建,在self.view == nil时,都会调用>loadView方法。IB创建视图时,loadView仍会被调用,此时IB定制的视图还没有创建完成,若是在loadView方法中添加视图创建代码,会将IB定制的视图覆盖掉。 所以,代码定制视图,一般在loadView里写; IB定制视图时,不要改写该方法。
    [super loadView];这个父类中的方法不要忘记了。

    viewDidLoad

    代码/IB创建视图时,viewDidLoad被调用(这里的加载属于实例化)时,self.view已经创建完成。 可以在该方法中进一步定制view视图。

    viewWillAppear

    在view即将添加到视图层级中(显示给用户)且任意显示动画切换之前调用(这个时候supperView还是nil)。这个方法中完成任何与视图显示相关的任务,例如改变视图方向、状态栏方向、视图显示样式等

    viewDidAppear

    在view被添加到视图层级中,显示动画切换之后调用(这时view已经添加到supperView中)。在这个方法中执行视图显示相关附件任务,如果重载了这个方法,必须在方法中调用[supper
    viewDidAppear];

    viewWillLayoutSubviews

    view即将布局其Subviews。比如view的bounds改变了(例如状态栏从不显示到显示,视图方向变化),要调整Subviews的位置,在调整之前要做的一些工作就可以在该方法中实现。

    viewDidLayoutSubviews

    view已经布局其Subviews。比如view的bounds改变了(例如状态栏从不显示到显示,视图方向变化),已经调整Subviews的位置,在调整完成之后要做的一些工作就可以在该方法中实现。
    viewWillLayoutSubviews

  • 相关阅读:
    java Metaspace频繁FGC问题定位(转载)
    JVM内存模型详解(转载)
    56. Merge Intervals
    begin again
    55. Jump Game
    54. Spiral Matrix
    53. Maximum Subarray
    52. N-Queens II
    51. N-Queens
    1. 赋值运算符函数
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026918.html
Copyright © 2020-2023  润新知