MJViewController的view的创建 的方式的优先级

控制器view的延迟加载

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

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

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

  1. /*
  2. 1.没有同名xib情况下
  3. 2.通过 storyboard 创建
  4. 3.有指定xib情况下创建
  5. 4.有同名xib情况
  6. 5.有同名去掉controll的情况
  7. 6.loadveiw
  8. */
  9. @implementation NJAppDelegate
  10.  
  11. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  12. {
  13. // 1.创建UIWindow
  14. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  15. self.window.backgroundColor = [UIColor whiteColor];
  16.  
  17. // 2.创建控制器
  18. NJViewController *vc = [[NJViewController alloc] init];
  19.  
  20. // 其实是两部操作, 首先调用loadview方法, 创建控制器的veiw,然后再设置控制器的view的颜色为紫色, 也就是说后一次的颜色覆盖掉了前一次的颜色
  21. vc.view.backgroundColor = [UIColor purpleColor];
  22.  
  23. // 3.设置控制器为window的根控制器
  24. self.window.rootViewController = vc;
  25.  
  26. // 4.显示window(在这一行才用到了控制器的veiw)
  27. [self.window makeKeyAndVisible];
  28.  
  29. return YES;
  30. }
  31.  
  32. - (void) test
  33. {
  34. /*
  35. // 1.第一种方式:没有xib和storyboard
  36. // (如果没有xib和storyboard, 会自动创建一个空白的view做为控制器的veiw)
  37. NJViewController *vc = [[NJViewController alloc] init];
  38. */
  39.  
  40. /*
  41. //2.通过 storyboard 创建
  42. // 如果通过storyboard创建, 会创建箭头指向view做为控制器的veiw
  43.  
  44. // 如果重写了控制器的loadview方法, 就不会创建storyboard中描述的view作为控制器的view, 而是创建一个空白的veiw做为控制器的veiw
  45. UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
  46. NJViewController *vc = [storyboard instantiateInitialViewController];
  47. */
  48.  
  49. /*
  50. // 3.有指定xib情况下创建
  51. // 如果通过xib, 会创建xib中描述的veiw做为控制器的veiw
  52. NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
  53. */
  54.  
  55. /*
  56. // 4.有同名xib情况
  57. // 如果有同名的xib, 会自动找到同名xib中描述的view做为控制器的veiw
  58. NJViewController *vc = [[NJViewController alloc] init];
  59. */
  60.  
  61. /*
  62. // 5.有同名去掉Controller的 xib情况
  63. // 如果有有同名去掉Controller的xib, 会自动找到该xib的view做为控制器的view
  64. NJViewController *vc = [[NJViewController alloc] init];
  65. */
  66.  
  67. // 6.重写控制器的loadveiw方法
  68. // 如果重写了控制器的loadview方法, 就不会去加载创建同名去掉controller的xib和同名的xib, 而是创建一个空白的veiw做为控制器的veiw
  69. NJViewController *vc = [[NJViewController alloc] init];
  70. }
  1. // 当控制器需要显示控制器的view的时候就会调用loadView
  2. // 可以在loadView方法中创建view给控制器
  3. // 该方法一般用于自定义控制器的view
  4. - (void)loadView
  5. {
  6. // 什么时候调用loadveiw就代表什么时候加载控制器的veiw
  7. NSLog(@"loadView");
  8.  
  9. self.view = [[UIView alloc] init];
  10. self.view.backgroundColor = [UIColor greenColor];
  11. }

IOS 控制器View的创建方式(方式的优先级 、view的延迟加载)的更多相关文章

  1. iOS控制器的生命周期分析和使用

    转自http://blog.csdn.net/qijianli/article/details/7826979 iOS的SDK中提供很多原生ViewController,大大提高了我们的开发效率,下面 ...

  2. iOS控制器的创建方式

    iOS控制器的创建.除了常见的alloc init外还有通过加载storyboard和xib的方式,下边逐一展开: 1.代码alloc init 创建方式 ViewController *vc= [[ ...

  3. 创建控制器的3种方式、深入了解view的创建和加载顺序

    转载自:http://blog.csdn.net/weisubao/article/details/41012243 (1)创建控制器的3种方式 - (BOOL)application:(UIAppl ...

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

    iOS开发UI篇—控制器的View的创建 一.6种创建控制器View的方式 #import "NJAppDelegate.h" #import "NJViewContro ...

  5. IOS UI-控制器的创建和控制器的View的创建

    一.控制器的创建和控制器的View的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在 ...

  6. 【转】 iOS开发UI篇—控制器的View的创建

    最近对view的周期等还不是非常清楚,就找到顶哥的文章,非常不错,就搬运过来了. 原文: http://www.cnblogs.com/wendingding/p/3770760.html 一.6种创 ...

  7. 在iOS中怎样创建可展开的Table View?(下)

    接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...

  8. iOS中按钮点击事件处理方式

    写在前面 在iOS开发中,时常会用到按钮,通过按钮的点击来完成界面的跳转等功能.按钮事件的实现方式有多种,其中 较为常用的是目标-动作对模式.但这种方式使得view与controller之间的耦合程度 ...

  9. iOS:视图切换的第一种方式:模态窗口

    一.UIModalController:模态窗口(一个控制器模态出另一个控制器的模态窗口) 当我们在view controller A中模态显示view controller B的时候,A就充当pre ...

随机推荐

  1. 一套简单的web即时通讯——第二版

    前言 接上一版,这一版的页面与功能都有所优化,具体如下: 1.优化登录拦截 2.登录后获取所有好友并区分显示在线.离线好友,好友上线.下线都有标记 3.将前后端交互的值改成用户id.显示值改成昵称ni ...

  2. React 从入门到进阶之路(四)

    之前的文章我们介绍了  React 绑定属性( 绑定class  绑定style).引入图片  循环数组渲染数据.接下来我们将介绍 React 事件,方法, React定义方法的几种方式 获取数据 改 ...

  3. Go:定时执行任务time.sleep和time.tick的优劣

    golang 写循环执行的定时任务,常见的有以下三种实现方式:1.time.Sleep方法: for { time.Sleep(time.Second) fmt.Println("我在定时执 ...

  4. Linux基础学习(一)

    前言:这个学习笔记是为了督促自己能够更好的学习Linux的有关知识. 参考书目 鸟哥的linux私房菜 Chapter 1:入门建议 新手建议:重点 基础一定一定要学好 那么什么是基础呢? 先从Lin ...

  5. Elasticsearch+Logstash+Kibana搭建分布式日志平台

    一.前言 编译安装 1.ELK简介 下载相关安装包地址:https://www.elastic.co/cn/downloads ELK是Elasticsearch+Logstash+Kibana的简称 ...

  6. 关于给gridSelect控件设置默认值

    给这个选择表格框添加默认值: <td class="form_label">                            客户名称:              ...

  7. Stream流、方法引用

    Stream流.方法引用 Stream流.方法引用 Stream流.方法引用 Stream流.方法引用 Stream流.方法引用 ... ...

  8. iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法

    1. Swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解. 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部 ...

  9. thinkphp5.1跨模块调用控制器或者模型

    tp5.1 采用命名空间的方式进行调用.

  10. 解决Nginx启动失败

    一.Nginx下载http://nginx.org/en/download.html 二.Nginx启动失败原因1.本人下载的是nginx-1.12.1(稳定版),下载完解压后,进入路径中,start ...