视图控制器自带视图的创建过程详解

来源:互联网 发布:java中链表 编辑:程序博客网 时间:2024/05/01 03:32
UIViewController 类中,定义了一下属性及方法:

@property (nonatomic, retain) UIView *view;

// 在该视图控制器对象的视图属性未被设定(即view 为 nil)的前提下,取方法(the getter)会首先引发 [self loadView]


-(void) loadView;

// 如果编程者没有使用一个 nib 文件,那么他就应该在这个方法中创建这个应用的自定义视图层级(视图树)。

// 这个方法严禁被直接调用


-(void) viewDidLoad;

// 在视图加载完毕后,该方法会被调用;

// 当一组视图控制器是用代码创建时,这个方法在 -(void)loadView方法 之后被调用;

// 当一组视图控制器是有nib 文件解压而来时,这个方法会在视图被设定之后调用。


视图控制器自带视图的创建过程详解 - Herbert77 - 叶落无尘
 上图所表示的就是视图控制器自带视图的加载过程。
最初,一个视图控制器的视图 view属性是为空的,在视图控制器在初始化的过程中,也包括该 view属性的初始化,当 view 属性被访问时,就会检查是否已经为该视图 view 属性准备了已有的nib ,若有,则把这个赋给 view 属性;如果没有,则需要 加载视图(loadView)看是否有自定义的加载方法,如果有,则使用已有的方法(重载父视图的 loadView方法即是走的这条路);如果没有自定义方法,则检查是否有 Storyboard,有则载入Storyboard,没有就创建一个 空视图。最终返回这个视图。完成了控制器视图的加载。
0 0
原创粉丝点击