控制器View的加载 && 创建
2016-05-20 20:04
162 查看
控制器View的加载 && 创建
loadView
- (void)loadView{ // 系统默认的做法, [super loadView] }
自定义控制器的view的时候重写这个方法
第一次使用控制器的view的时候调用
在这个方法中如果没有自定义view,就不能获取控制器的view(
self.view),不然会死循环
第一次用到控制器的view的时候(
self.view),系统会这样调用
getter方法
- (UIView *)view{ if(_view == nil){ [self loadView]; [self viewDidLoad]; } return _view; }
一旦重写的了这个方法,就不要调用
[super loadView], 因为
[super loadView]是系统默认的做法
如果重写了这个方法,就不会去加载
storyboard和
xib描述的控制器的View
控制器View的创建
- 过程
- 如果我们自定义
loadView方法的话,会根据我们的自定义的代码去创建
view,如果没有的话
- 看看有没有
storyboard,如果有的话,根据
storyboard的描述去创建
view,如果没有的话
- 看看有没有通过
initWithNibName:bundle:初始化控制器,如果
nibName不为
nil的话,根据
nibName对应
xib的描述去创建,如果
nibName为
nil的话
- 寻找有没有跟控制器类名同名但是不带
Controller的
xib,如果有的话就会去加载,如果没有的话
- 寻找有没有跟控制器类名同名的
xib,如果有就会去加载,如果没有的话
- 创建空的
view
- 注意
- 通过
alloc init创建控制器,如果这个控制器的
view有
storyboard或
xib描述的话,这样创建会自动从
storyboard或
xib加载控制器的
View,其他非控制器控件
alloc init创建不会自动加载
xib
- 因为控制器的
init方法底层会调用
initWithNibName:bundle:
- 如果通过
xib加载控制器的
view,在控制器
viewDidLoad方法中拿到的
view的
size是不准确的
- 如果通过
storyboard加载控制器的
view,在控制器
viewDidLoad方法中拿到的
view的
size是准确的(有待验证)
控制器的view懒加载
第一次使用的时候才会去加载,并不是创建控制器的时候去加载如果控制器是窗口的根控制器,就可以不用设置控制器view的尺寸
内存警告处理
生命周期方法
相关文章推荐
- MySQL入门--插入记录的时候NULL与NOT NULL
- 线性表的静态单链表存储结构
- PowerDesigner 反向工程生成ER图步骤
- 实现strcpy的功能【不可以使用strcyp函数】
- Python os.popen()方法的用法
- 《链表》——单向链表和双向链表(Java)
- android开发步步为营之104:文字加阴影效果和描边效果的实现
- lightoj 1421 - Wavio Sequence LIS变形
- Max Factor (hdu_2710) 素数筛选
- 快速理解C#中的委托与事件
- 从开始到结束,手把手教你使用busybox构建类嵌入式Linux系统
- windows下vs2013使用C++访问redis
- Android 的Context和application
- java集合总结
- 你若顽强到底,一切皆有可能——谈工程师职业素养(《大话Java性能优化》前言)
- sdut 3257 Cube number
- 多线程技术(三)
- 【bzoj 2393】Cirno的完美算数教室
- HashMap和HashSet的区别
- 字典树典型应用(1247)