创建控制器的几种方式

创建控制器的方式:

  <方式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:

           

 

    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)。

 

 

=======附加=========================

如何创建一个控制器?

控制器常见的创建方式有以下几种:

1. 通过storyboard创建;

2. 直接创建:

  XZViewController *xzVc = [[XZViewController alloc] init];

3.指定xib文件来创建:

  XZViewController *xzVc = [[XZViewController alloc] initWithNibName:@"XZViewController" bundle:nil];

 

通过storyboard创建控制器:

1. 先加载storyboard文件 (Test是storyboard的文件名)

  UIStoryboard *storyboard = [[UIStoryboard storyboardWithName:@"Test" bundle:nil];

2. 接着初始化storyboard中的控制器

  1>  初始化"初始化控制器" (箭头所指向的控制器)

      XZViewController *xzVc = [storyboard instantiateInitialViewController];

  2>  通过一个标识初始化对应的控制器:

      XZViewController *xzVc = [storyboard instantiateInitialViewControllerWithIdentifier:@"xz"];

 

转载于:https://www.cnblogs.com/nxz-diy/p/5066339.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值