iOS-控制器以及View的创建

一.控制器的创建

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

   图解:

         

  

    

  

  

posted @ 2014-05-05 06:42  W.Sir  阅读(197)  评论(0)    收藏  举报