zoukankan      html  css  js  c++  java
  • iOS开发UI篇—控制器的View的创建

    iOS开发UI篇—控制器的View的创建

    一、6种创建控制器View的方式

    复制代码
     1 #import "NJAppDelegate.h"
     2 #import "NJViewController.h"
     3 /*
     4  1.没有同名xib情况下
     5  2.通过 storyboard 创建
     6  3.有指定xib情况下创建
     7  4.有同名xib情况
     8  5.有同名去掉controll的情况
     9  6.loadveiw
    10  */
    11 @implementation NJAppDelegate
    12 
    13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    14 {
    15     // 创建UIWindow
    16     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    17     self.window.backgroundColor = [UIColor whiteColor];
    18     
    19     /*
    20      // 1.第一种方式:没有xib和storyboard
    21      // (如果没有xib和storyboard, 会自动创建一个空白的view做为控制器的veiw)
    22      NJViewController *vc = [[NJViewController alloc] init];
    23      */
    24     
    25     /*
    26      //2.通过 storyboard 创建
    27      // 如果通过storyboard创建, 会创建箭头指向view做为控制器的veiw
    28      
    29      // 如果重写了控制器的loadview方法, 就不会创建storyboard中描述的view作为控制器的view, 而是创建一个空白的veiw做为控制器的veiw
    30      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
    31      NJViewController *vc = [storyboard instantiateInitialViewController];
    32      */
    33     
    34     /*
    35      // 3.有指定xib情况下创建
    36      // 如果通过xib, 会创建xib中描述的veiw做为控制器的veiw
    37      NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
    38      */
    39     
    40     /*
    41      //  4.有同名xib情况
    42      // 如果有同名的xib, 会自动找到同名xib中描述的view做为控制器的veiw
    43      NJViewController *vc = [[NJViewController alloc] init];
    44      */
    45     
    46     /*
    47      // 5.有同名去掉Controller的 xib情况
    48      // 如果有有同名去掉Controller的xib, 会自动找到该xib的view做为控制器的view
    49      NJViewController *vc = [[NJViewController alloc] init];
    50      */
    51     
    52     // 6.重写控制器的loadveiw方法
    53     // 如果重写了控制器的loadview方法, 就不会去加载创建同名去掉controller的xib和同名的xib, 而是创建一个空白的veiw做为控制器的veiw
    54     NJViewController *vc = [[NJViewController alloc] init];
    55     
    56     // 设置控制器为window的根控制器
    57     self.window.rootViewController = vc;
    58     // 显示window
    59     [self.window makeKeyAndVisible];
    60     
    61     return YES;
    62 }
    复制代码

    六种方式:

    1.没有同名xib情况下
    2.通过 storyboard 创建
    3.有指定xib情况下创建
    4.有同名xib情况
    5.有同名去掉controll的情况
    6.loadveiw

    二、创建控制器View的优先级

    苹果官方文档示意图:

    三、控制器View的延迟加载

    说明:

    控制器的view是延迟加载的:用到时再加载

    可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载

    控制器的view加载完毕就会调用viewDidLoad方法

    复制代码
     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      NJViewController *vc = [[NJViewController alloc] init];
    10     
    11     // 其实是两步操作, 首先调用loadview方法, 创建控制器的veiw,然后再设置控制器的view的颜色为紫色, 也就是说后一次的颜色覆盖掉了前一次的颜色
    12     vc.view.backgroundColor = [UIColor purpleColor];
    13     
    14     // 3.设置控制器为window的根控制器
    15     self.window.rootViewController = vc;
    16     
    17     // 4.显示window(在这一行才用到了控制器的veiw)
    18     [self.window makeKeyAndVisible];
    19     
    20     return YES;
    21 }
    复制代码

    主控制器文件中:

    复制代码
     1 #import "NJViewController.h"
     2 
     3 @interface NJViewController ()
     4 
     5 @end
     6 
     7 @implementation NJViewController
     8 
     9 // 当控制器需要显示控制器的view的时候就会调用loadView
    10 // 可以在loadView方法中创建view给控制器
    11 // 该方法一般用于自定义控制器的view
    12 - (void)loadView
    13 {
    14     // 什么时候调用loadveiw就代表什么时候加载控制器的veiw
    15     NSLog(@"loadView");
    16     
    17     self.view = [[UIView alloc] init];
    18     self.view.backgroundColor = [UIColor greenColor];
    19 }
    20 
    21 - (void)viewDidLoad
    22 {
    23     [super viewDidLoad];
    24     NSLog(@"viewDidLoad");
    25 }
    26 @end
  • 相关阅读:
    2.Android之按钮Button和编辑框EditText学习
    《DSP using MATLAB》Problem 3.8
    《DSP using MATLAB》Problem 3.7
    《DSP using MATLAB》Problem 3.6
    《DSP using MATLAB》Problem 3.5
    《DSP using MATLAB》Problem 3.4
    《DSP using MATLAB》Problem 3.3
    《DSP using MATLAB》Problem 3.2
    《DSP using MATLAB》Problem 3.1
    《DSP using MATLAB》Problem 2.20
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5751835.html
Copyright © 2011-2022 走看看