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

 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.第一种方式:没有xibstoryboard

            21      // (如果没有xibstoryboard, 会自动创建一个空白的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      // 如果有有同名去掉Controllerxib, 会自动找到该xibview做为控制器的view

            49      NJViewController *vc = [[NJViewController alloc] init];

            50      */

    51

    52     // 6.重写控制器的loadveiw方法

    53     // 如果重写了控制器的loadview方法就不会去加载创建同名去掉controllerxib和同名的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方法判断一个UIViewControllerview是否已经被加载

控制器的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



http://www.cnblogs.com/wendingding/p/3770760.html









 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值