IOS 控制器View的创建方式(方式的优先级 、view的延迟加载)
MJViewController的view的创建 的方式的优先级
控制器view的延迟加载
● 控制器的view是延迟加载的:用到时再加载
● 可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载
● 控制器的view加载完毕就会调用viewDidLoad方法
- /*
- 1.没有同名xib情况下
- 2.通过 storyboard 创建
- 3.有指定xib情况下创建
- 4.有同名xib情况
- 5.有同名去掉controll的情况
- 6.loadveiw
- */
- @implementation NJAppDelegate
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- // 1.创建UIWindow
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- self.window.backgroundColor = [UIColor whiteColor];
- // 2.创建控制器
- NJViewController *vc = [[NJViewController alloc] init];
- // 其实是两部操作, 首先调用loadview方法, 创建控制器的veiw,然后再设置控制器的view的颜色为紫色, 也就是说后一次的颜色覆盖掉了前一次的颜色
- vc.view.backgroundColor = [UIColor purpleColor];
- // 3.设置控制器为window的根控制器
- self.window.rootViewController = vc;
- // 4.显示window(在这一行才用到了控制器的veiw)
- [self.window makeKeyAndVisible];
- return YES;
- }
- - (void) test
- {
- /*
- // 1.第一种方式:没有xib和storyboard
- // (如果没有xib和storyboard, 会自动创建一个空白的view做为控制器的veiw)
- NJViewController *vc = [[NJViewController alloc] init];
- */
- /*
- //2.通过 storyboard 创建
- // 如果通过storyboard创建, 会创建箭头指向view做为控制器的veiw
- // 如果重写了控制器的loadview方法, 就不会创建storyboard中描述的view作为控制器的view, 而是创建一个空白的veiw做为控制器的veiw
- UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Test" bundle:nil];
- NJViewController *vc = [storyboard instantiateInitialViewController];
- */
- /*
- // 3.有指定xib情况下创建
- // 如果通过xib, 会创建xib中描述的veiw做为控制器的veiw
- NJViewController *vc = [[NJViewController alloc] initWithNibName:@"One" bundle:nil];
- */
- /*
- // 4.有同名xib情况
- // 如果有同名的xib, 会自动找到同名xib中描述的view做为控制器的veiw
- NJViewController *vc = [[NJViewController alloc] init];
- */
- /*
- // 5.有同名去掉Controller的 xib情况
- // 如果有有同名去掉Controller的xib, 会自动找到该xib的view做为控制器的view
- NJViewController *vc = [[NJViewController alloc] init];
- */
- // 6.重写控制器的loadveiw方法
- // 如果重写了控制器的loadview方法, 就不会去加载创建同名去掉controller的xib和同名的xib, 而是创建一个空白的veiw做为控制器的veiw
- NJViewController *vc = [[NJViewController alloc] init];
- }
- // 当控制器需要显示控制器的view的时候就会调用loadView
- // 可以在loadView方法中创建view给控制器
- // 该方法一般用于自定义控制器的view
- - (void)loadView
- {
- // 什么时候调用loadveiw就代表什么时候加载控制器的veiw
- NSLog(@"loadView");
- self.view = [[UIView alloc] init];
- self.view.backgroundColor = [UIColor greenColor];
- }
IOS 控制器View的创建方式(方式的优先级 、view的延迟加载)的更多相关文章
- iOS控制器的生命周期分析和使用
转自http://blog.csdn.net/qijianli/article/details/7826979 iOS的SDK中提供很多原生ViewController,大大提高了我们的开发效率,下面 ...
- iOS控制器的创建方式
iOS控制器的创建.除了常见的alloc init外还有通过加载storyboard和xib的方式,下边逐一展开: 1.代码alloc init 创建方式 ViewController *vc= [[ ...
- 创建控制器的3种方式、深入了解view的创建和加载顺序
转载自:http://blog.csdn.net/weisubao/article/details/41012243 (1)创建控制器的3种方式 - (BOOL)application:(UIAppl ...
- iOS开发UI篇—控制器的View的创建
iOS开发UI篇—控制器的View的创建 一.6种创建控制器View的方式 #import "NJAppDelegate.h" #import "NJViewContro ...
- IOS UI-控制器的创建和控制器的View的创建
一.控制器的创建和控制器的View的创建 说明:控制器有三种创建方式,下面一一进行说明. 一.第一种创建方式(使用代码直接创建) 1.创建一个空的IOS项目. 2.为项目添加一个控制器类. 3.直接在 ...
- 【转】 iOS开发UI篇—控制器的View的创建
最近对view的周期等还不是非常清楚,就找到顶哥的文章,非常不错,就搬运过来了. 原文: http://www.cnblogs.com/wendingding/p/3770760.html 一.6种创 ...
- 在iOS中怎样创建可展开的Table View?(下)
接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...
- iOS中按钮点击事件处理方式
写在前面 在iOS开发中,时常会用到按钮,通过按钮的点击来完成界面的跳转等功能.按钮事件的实现方式有多种,其中 较为常用的是目标-动作对模式.但这种方式使得view与controller之间的耦合程度 ...
- iOS:视图切换的第一种方式:模态窗口
一.UIModalController:模态窗口(一个控制器模态出另一个控制器的模态窗口) 当我们在view controller A中模态显示view controller B的时候,A就充当pre ...
随机推荐
- 一套简单的web即时通讯——第二版
前言 接上一版,这一版的页面与功能都有所优化,具体如下: 1.优化登录拦截 2.登录后获取所有好友并区分显示在线.离线好友,好友上线.下线都有标记 3.将前后端交互的值改成用户id.显示值改成昵称ni ...
- React 从入门到进阶之路(四)
之前的文章我们介绍了 React 绑定属性( 绑定class 绑定style).引入图片 循环数组渲染数据.接下来我们将介绍 React 事件,方法, React定义方法的几种方式 获取数据 改 ...
- Go:定时执行任务time.sleep和time.tick的优劣
golang 写循环执行的定时任务,常见的有以下三种实现方式:1.time.Sleep方法: for { time.Sleep(time.Second) fmt.Println("我在定时执 ...
- Linux基础学习(一)
前言:这个学习笔记是为了督促自己能够更好的学习Linux的有关知识. 参考书目 鸟哥的linux私房菜 Chapter 1:入门建议 新手建议:重点 基础一定一定要学好 那么什么是基础呢? 先从Lin ...
- Elasticsearch+Logstash+Kibana搭建分布式日志平台
一.前言 编译安装 1.ELK简介 下载相关安装包地址:https://www.elastic.co/cn/downloads ELK是Elasticsearch+Logstash+Kibana的简称 ...
- 关于给gridSelect控件设置默认值
给这个选择表格框添加默认值: <td class="form_label"> 客户名称: ...
- Stream流、方法引用
Stream流.方法引用 Stream流.方法引用 Stream流.方法引用 Stream流.方法引用 Stream流.方法引用 ... ...
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
1. Swift与oc混编译具体怎么实现,这儿我就不重复讲出了,网上有大把的人讲解. 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部 ...
- thinkphp5.1跨模块调用控制器或者模型
tp5.1 采用命名空间的方式进行调用.
- 解决Nginx启动失败
一.Nginx下载http://nginx.org/en/download.html 二.Nginx启动失败原因1.本人下载的是nginx-1.12.1(稳定版),下载完解压后,进入路径中,start ...