你的位置:首页 > 操作系统

[操作系统]创建控制器的几种方式


一、创建控制器的方式:

<方式1>

      XZOneViewController *one = [[XZOneViewController alloc] init];
        one.view.backgroundColor = [UIColor redColor];
        self.window.rootViewController = one;

 

<方式2>主动加载storyboard (从现成的storyboard里面加载已经描述好了的东西)

  // 1.先创建一个storyboard文件 Two.storyboard,但是在Main Interface中不设置成启动加载main storyboard(去掉main)。

 

      // 2. 加载storyboard文件,并没有创建storyboard里面的控制器。

  // 传nil代表mainBundle,操作storyboard对象意味着操作Two.storyboard文件。
      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Two" bundle:nil];

 

  // 3. 创建storyboard里面的控制器

  //     UIViewController *vc = [storyboard instantiateInitialViewController]; // 返回的是箭头所指的控制器
         UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"pink"]; // 此控制器是没有箭头指向的控制器,identifier是pink

     self.window.rootViewController = vc;

    // 示意图1:

           

 

<方式3>设置为storyboard为整个程序最主要storyboard,程序已启动就会去加载Main.storyboard:

  自动生成加载storyboard代码为:

          // 1.创建window
          self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
          // 2.加载storyboard,并且创建初始化控制器(箭头所指的控制器)
          UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
          self.window.rootViewController = [storyboard instantiateInitialViewController];
    
          // 3.显示窗口
          [self.window makeKeyAndVisible];

 

#加载主要storyboard会完成三件事情:1> 创建窗口

2> 创建箭头所指的 Initial View Controller。

3> 并设置控制器为窗口的根控制器。控制器的view就显示在window上面了。

 

总结:1. 没有主动去加载storyboard,storyboard不会凭空冒出来;

   2. 只要设置了主窗口,会自动生成加载storyboard代码。