并没有创建storyboard里面的控制器金沙网址

创建控制器的几种方式,创建控制器几种

创建控制器的方式:

  <方式1>直接创建:

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

 

  <方式2>通过storyboard创建:

    1. 主动加载storyboard
(从现成的storyboard里面加载已经描述好了的东西)

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

 

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

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

 

    // 1.2 创建storyboard里面的控制器

    // 1.2 情况一:

        // UIViewController *vc = [storyboard
instantiateInitialViewController]; // 返回的是箭头所指的控制器

    // 1.2 情况二:
        UIViewController *vc = [storyboard
instantiateViewControllerWithIdentifier:@”pink”]; //
此控制器是没有箭头指向的控制器,identifier是pink

      self.window.rootViewController = vc;

    // 示意图1:

           
金沙网址 1

 

    2.
设置为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代码。
            

  <方式3>指定xib文件来创建:

      XZViewController *viewVc = [[XZViewController alloc]
initWithNibName:@”xzVc” bundle:nil]; //
这之前已经创建了一个xzVc.xib文件,记得把xib的view拖给相应的控制器(file‘owner)。

 

 

=======附=======注=截图为MJ视频中截图==================

    
金沙网址 2

 

     
金沙网址 3

 

创建控制器的方式: 方式1 直接创建: XZOneViewController *one =
[[XZOneViewController alloc] init]; one.view.b…

相关文章