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];
}

最新文章

  1. 2013 duilib入门简明教程 -- 前言(1)
  2. LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
  3. Mensa Intellect test
  4. 分模块创建maven项目(一)
  5. Linux摄像头驱动学习之:(五)UVC-分析设备描述符
  6. StringGrid 实例2:1、获取 StringGrid 的行数、列数; 2、给单元赋值.
  7. C,C++回文字符串判断(字符串指针的用法)
  8. HDU 3790 最短路径问题(SPFA || Dijkstra )
  9. 安卓开发错误:The type android.support.v4.app.TaskStackBuilder$SupportParentable cannot be resolved.
  10. [序列化] SerializeHelper--序列化操作帮助类 (转载)
  11. window.showModalDialog以及window.open用法简介
  12. 怎样实现多文件上传 在iOS开发中
  13. [Java]利用拦截器和自定义注解做登录以及权限验证
  14. [java多线程] - Thread&Runnable运用
  15. composer包(发布到github上)同步到Packagist
  16. new image()
  17. Express全系列教程之(三):get传参
  18. 月薪25K的90后程序员,他们都经历了什么?
  19. 自定义mvc或mtv框架:基于wsgiref的web框架
  20. 基于FPGA的UART协议实现(通过线性序列机)

热门文章

  1. Docker 企业级镜像仓库 Harbor 的搭建与维护
  2. 商派OMS增加PMC跟生产中心角色权限思路
  3. struts2学习笔记——第一个struts2应用配置
  4. Docker 容器的数据卷
  5. 洛谷P2580(trie)
  6. 自动化运维工具之Cobbler
  7. JMeter - 后处理器/脚本语言 - 比较
  8. Poj 2096 (dp求期望 入门)
  9. mysql中 if语句的使用
  10. Vue 项目: npm run dev b报错 “'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”