一.控制器的创建
1.直接创建(纯代码)
UIViewController *vc = [[UIViewController alloc] init];
vc.view.backgroundColor = [UIColor redColor];
2.通过storyboard加载,详细的分为两步
1>.加载指定的storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
注意:这一步并不会创建storyboard中得控制器以及控件
2>.创建storyboard中箭头指向的控制器
UIViewController *vc = [storyboard instantiateInitialViewController]; //此时真正的创建控制器
3.通过xib文件创建控制器
NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil]; self.window.rootViewController = vc;
注:从文件名为One.xib中创建控制器
二.控制器View的创建
1.第一种方式:没有xib和storyboard
UIViewController *vc = [[UIViewController alloc] init];
注:这种没有Xib和Storyboard的方式,会自动创建一个空白的view做为控制器的veiw
2.通过 storyboard 创建
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil]; UIViewController *vc = [storyboard instantiateInitialViewController];
注:如果重写了控制器的loadview方法, 就不会创建storyboard中描述的view作为控制器的view, 而是创建一个空白的veiw做为控制器的veiw
3.通过Xib创建(这种方式存在3中途径,并且具有优先级)
1>.有指定xib情况下创建
NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
注:这种方式会创建指定名称的xib中描述的veiw做为控制器的veiw
2>.有同名去掉Controller的 xib情况
UIViewController *vc = [[UIViewController alloc] init];
注:如果程序中有以控制器名称去掉Controller后而命名的Xib,系统会自动需找,从这个xib描述的View创建
3>.有同名xib情况(代码和上面一样)
UIViewController *vc = [[UIViewController alloc] init];
注:如果文件中有以控制器名称相同而命名的Xib,系统会自动需找,从这个xib描述的View创建。强调:如果程序中有以控制器名称相同的Xib文件
以及以控制器名称去掉Controller后而命名的Xib同时存在,这时优先从以控制器名称去掉Controller后而命名的Xib描述的View创建
三.控制器View的创建的优先级(下面依次从优先级最高分别列出)
1.重写了控制器的loadview方法
2.明确指定了xib和storyboard
3.没有指定了xib和storyboard,以控制器名称去掉Controller后而命名的Xib描述的View中创建
4.没有指定了xib和storyboard,以控制器名称同名的Xib描述的View中创建
5.创建一个空白的View
图解: