创建View的方式有好几种,下面一一列举一下(在这里,特别感谢李南江老师)
1.没有同名xib的情况下
// 如果没有xib和storyboard,会自动创建一个空白的view做为控制器的view
NJViewController *vc = [NJViewController alloc]init];
//2.通过storyboard创建
//如果通过storyboard创建,会创建箭头指向的view做为视图控制器的view
UIStoryboard *storyboard = [UIStoryboard storyboard WithName:@"Test" bundle:nil];
NJViewController *vc = []storyboard instantiateInitialViewController];
//3.有指定xib情况下创建
//通过xib创建,会创建xib中描述的view做为视图控制器的view
NJViewController *vc = [NJViewController alloc]initWithNibName:@"one" bundle:nil
];
//4.有同名xib情况下
//如果有同名的xib,会自动找到同名xib中描述的view做为视图控制器的view
NJViewController *vc = [NJViewController alloc]init];
//5.如果有有同名去掉Controller 的xib
//如果有有同名去掉Controller 的xib,会自动找到同名xib中描述的view做为视图控制器的view
//NJViewController *vc = [NJViewController alloc]init];
//6.重写控制器的Loadview方法
//如果重写了控制器的Loadview方法,就不会去加载创建同名去掉Controller的xib和同名的xib,而是创建一个空白的view做为控制器的view
NJControllerView *vc = [NJViewController alloc ]init];
最后还不要忘了
self.window.setrootcontroller = vc;
[self.window makekeyandvisible];
补充一点,添加控制器到导航控制器中得方法:
//1.创建导航控制器
NJNavgationController *nav = [UINavgationController alloc]init];
//设置导航控制器为window的根控制器
self.window.rootViewController = nav;
创建导航控制器的子控制器有下面几种方式:
//1.通过pushviewcontroller 方法
NJOneviewcontroller *one = [NJOneviewcontroller alloc]init];
[nav pushviewcontroller :one animated:yes];
//2.通过addchildviewcontroller方法
[nav addchildviewcontroller :one ];
//3第三种 导航控制器的栈 nav.viewcontrollers == nav.childviewcontrollers;
[nav viewcontrollers] = @[one]; 直接给这个代表导航控制器栈的数组赋值
注意这里不能使用nav childviewcontrollers 因为childviewcontrollers是readonly 也就是只读得
//4.第4种 在nav初始化的时候就指定
UINavgationcontroller *nav = [UINavgation alloc]initwithrootviewcontroler:one];
这样运行出来的效果是一样的