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 ...
随机推荐
- java进阶——反射(Reflect)
一.Class类 1.类是对象,类是java.lang.Class类的实例对象,这个对象称为该类的类类型: 2.任何一个类都是Class的实例对象,类的表达式: (1)Class c1 = int.C ...
- maven项目跳转页面报空指针错误 Servlet.service() for servlet 异常
Servlet.service() for servlet jsp threw exceptionjava.lang.NullPointerExceptionat org.jaronsource.ms ...
- 7、python数据类型之集合set
数据类型之集合setset 不允许重复的无序集合,不能通过下标取值,因为无序1.创建 创建空集合 s ={} 默认类型为字典,所以不是空集合,空集合如下 s = set() s = { ...
- codeforces C. Vasya And The Mushrooms (思维+模拟)
题意:给定一个2*n的矩形方格,每个格子有一个权值,从(0,0)开始出发,要求遍历完整个网格(不能重复走一个格子),求最大权值和,(权值和是按照step*w累加,step步数从0开始). 转载: 题解 ...
- PHP var_export
var_export可以将一个数组转为一个字符串 不同于var_dump,var_export并不会输出数据的类型以及字符大小等,只会简单把数组的key跟value拼接成一个字符串 <?php ...
- JS——定时器
定时器在JS中的作用: 1)制作动画.时钟.倒计时 2)异步操作 3)函数缓冲与节流 定时器类型: 1)setTimeout 只执行一次的定时器 2)clearTimeout 关闭只执行一次的定时器 ...
- js——本地存储
1. cookie 容量小:4k,在同源的http请求时携带传输,占用带宽,有日期限制 <!DOCTYPE html> <html lang="en"> & ...
- oracle 中的null与''
1.先看看Null与''在oracle中的表现 C:\Users\zen>sqlplus hr/hr SQL Production :: Copyright (c) , , Oracle. Al ...
- 再谈Drupal 7.X的性能优化运行速度问题
D6升级D7之后,性能着实让人头大,不妨参考下面文章,另外站内搜索DOOOOR里其他优化文章,中西医结合吧.其中CDN和BOOST效果还可以,其他的没试过. 1,服务器 Web服务器建议,推荐使用HA ...
- pat1049. Counting Ones (30)
1049. Counting Ones (30) 时间限制 10 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The task ...