zoukankan      html  css  js  c++  java
  • 控制器创建的三种方式

     1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     2 {
     3     // 1.创建UIWindow
     4     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     5     self.window.backgroundColor = [UIColor whiteColor];
     6     
     7     /*
     8     // 2.创建控制器
     9     // 2.1第一种创建方式
    10     NJViewController *vc = [[NJViewController alloc] init];
    11     vc.view.backgroundColor = [UIColor redColor];
    12     */
    13     /*
    14     // 2.2第二种创建方式
    15 //    NJViewController *vc = [[NJViewController alloc] init];
    16     
    17     // 加载UIStoryboard(注意:仅仅是加载名称叫做Test的storyboard, 并不会创建storyboard重的控制器以及控件)
    18     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
    19     
    20     // 创建storyboard中箭头指向的控制器
    21     // NJViewController *vc = [storyboard instantiateInitialViewController];
    22     
    23     // UIViewController *vc = [storyboard instantiateInitialViewController];
    24      
    25     UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"two"];
    26 //    UINib *nib = [UINib nibWithNibName:@"" bundle:[NSBundle mainBundle]];
    27 //    [[nib instantiateWithOwner:nil options:nil] lastObject];
    28     */
    29     
    30     // 2.3第三种创建方式
    31     // was unable to load a nib named "One"'
    32     // loaded the "One" nib but the view outlet was not set.'
    33 
    34    NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
    35     
    36     self.window.rootViewController = vc;
    37     
    38     // 3.让UIWindow显示出来
    39     [self.window makeKeyAndVisible];
    40     return YES;
    41 }

    模仿有storyboard的项目控制器的创建:

     1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     2 {
     3    
     4     // Override point for customization after application launch.
     5     // 1.创建winodw
     6     self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
     7     // 2.创建控制器
     8     UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
     9     NJViewController * vc = [storyboard instantiateInitialViewController];
    10     // 3.设置window的根控制器
    11     self.window.rootViewController = vc;
    12     // 4.显示window
    13     [self.window makeKeyAndVisible];
    14     
    15     return YES;
    16 }

    controller中view的创建方式

     1 //
     2 //  NJAppDelegate.m
     3 //  05-控制器View的创建
     4 //
     5 //  Created by apple on 14-6-4.
     6 //  Copyright (c) 2014年 heima. All rights reserved.
     7 //
     8 
     9 #import "NJAppDelegate.h"
    10 #import "NJViewController.h"
    11 /*
    12  1.没有同名xib情况下
    13  2.通过 storyboard 创建
    14  3.有指定xib情况下创建
    15  4.有同名xib情况
    16  5.有同名去掉controll的情况
    17  6.loadveiw
    18  */
    19 @implementation NJAppDelegate
    20 
    21 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    22 {
    23     // 1.创建UIWindow
    24     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    25     self.window.backgroundColor = [UIColor whiteColor];
    26     
    27     
    28     // 2.创建控制器
    29      NJViewController *vc = [[NJViewController alloc] init];
    30     
    31     // 其实是两部操作, 首先调用loadview方法, 创建控制器的veiw,然后再设置控制器的view的颜色为紫色, 也就是说后一次的颜色覆盖掉了前一次的颜色
    32     vc.view.backgroundColor = [UIColor purpleColor];
    33     
    34     // 3.设置控制器为window的根控制器
    35     self.window.rootViewController = vc;
    36     
    37     // 4.显示window(在这一行才用到了控制器的veiw)
    38     [self.window makeKeyAndVisible];
    39     
    40     return YES;
    41 }
    42 
    43 - (void) test
    44 {
    45     /*
    46      // 1.第一种方式:没有xib和storyboard
    47      // (如果没有xib和storyboard, 会自动创建一个空白的view做为控制器的veiw)
    48      NJViewController *vc = [[NJViewController alloc] init];
    49      */
    50     
    51     /*
    52      //2.通过 storyboard 创建
    53      // 如果通过storyboard创建, 会创建箭头指向view做为控制器的veiw
    54      
    55      // 如果重写了控制器的loadview方法, 就不会创建storyboard中描述的view作为控制器的view, 而是创建一个空白的veiw做为控制器的veiw
    56      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
    57      NJViewController *vc = [storyboard instantiateInitialViewController];
    58      */
    59     
    60     /*
    61      // 3.有指定xib情况下创建
    62      // 如果通过xib, 会创建xib中描述的veiw做为控制器的veiw
    63      NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
    64      */
    65     
    66     /*
    67      //  4.有同名xib情况
    68      // 如果有同名的xib, 会自动找到同名xib中描述的view做为控制器的veiw
    69      NJViewController *vc = [[NJViewController alloc] init];
    70      */
    71     
    72     /*
    73      // 5.有同名去掉Controller的 xib情况
    74      // 如果有有同名去掉Controller的xib, 会自动找到该xib的view做为控制器的view
    75      NJViewController *vc = [[NJViewController alloc] init];
    76      */
    77     
    78     // 6.重写控制器的loadveiw方法
    79     // 如果重写了控制器的loadview方法, 就不会去加载创建同名去掉controller的xib和同名的xib, 而是创建一个空白的veiw做为控制器的veiw
    80     NJViewController *vc = [[NJViewController alloc] init];
    81 }
    82 
    83 @end
  • 相关阅读:
    2018-2019-2 网络对抗技术 20165230 Exp2 后门原理与实践
    BZOJ2038: [2009国家集训队]小Z的袜子(hose)
    BZOJ3262陌上花开 树状数组+Treap
    BZOJ1468 Tree 点分治入门练习题
    BZOJ2152 聪聪可可 点分治入门
    BZOJ3506 BZOJ1552 排序机械臂 Splay区间翻转(数组版自底向上的写法)
    BZOJ3196: Tyvj 1730 二逼平衡树 (线段树 + Treap 练习题)
    ZOJ2112 Dynamic Rankings 动态区间Kth(单点修改) 线段树+Treap写法
    OO第4单元总结&课程总结
    OO第三单无总结
  • 原文地址:https://www.cnblogs.com/liqiantu/p/4437877.html
Copyright © 2011-2022 走看看