ViewController 的view的3种创建方式 (不管哪一种 都会调用loadView方法):
1.StoryBoard
2.xib
3.代码创建
1.StoryBoard方式
1. 首先初始化StoryBoard. UIStoryboard*storyBoard = [UIStoryboard storyboardWithName:@"OneView" bundle:nil];
2. 通过StoryBoard生成一个ControllerView .
OneViewController * controller= [storyBoard instantiateInitialViewController];
若以这种方式初始化ControllerView则必须在 OneView.storyboard 勾上 is Initial View Controller.
OneViewController * controller= [storyBoard instantiateViewControllerWithIdentifier:@"XXX"];
若以这种方式初始化ControllerView则必须将 OneView.storyboard 的Storyboard ID 设为 XXX
2.xib方式. (注意此时xib 的File's Owner的class 一定要指定为要绑定的 ViewController. 而且一定要在File's Owner上点击右键将view连接到自己创建的view控件上.(不做会报错)
1.创建的时候指定某个xib initWithNibName:
2.创建的时候没有指定xib,即 [[X alloc]init].默认会查找与控制器名(OneViewController)Controller之前的文字相同的xib (即 OneView.xib).
3. 若没有找到OneView.xib 则会查找与控制器名Controller(OneViewController)同名的xib(即 OneViewController.xib)
4.若仍然没有找到,则会调用loadView 自己创建一个空白(透明 什么都没有)的view(loadView没有被重写的时候). 一般可在loadView里面自定义view(这样就不会空白了..)
3.代码方式.
在ControllerView重写loadView方法. 比如self.view = [[UIView alloc] init];……… 这个时候可以不调用[super loadView];
最后几个tips:
1.控制器的view是延迟加载的:用到时再加载
2.可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载
3.控制器的view加载完毕就会调用viewDidLoad方法