loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的用法
2016-02-01 09:40
295 查看
转载,原地址为:http://jianyu996.blog.163.com/blog/static/11211455520131226840879/
请尊重原创:
1,无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。
手工创建视图时,loadView被调用时self.view还为nil。一般在该方法中手工定制view。XIB创建视图时,loadView仍会被调用、loadView被调用时XIB定制的视图还没创建完成,若是再覆写该方法的话、会将XIB定制的视图覆盖掉。
所以,纯手工定制视图时,一般在该方法中写;XIB定制视图时、不要覆写该方法。
2,无论XIB还是代码创建都会调用viewDidLoad方法。
手工创建视图时,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
XIB创建视图时,viewDidLoad仍会被调用,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
所以,无论那种方式定制视图、都可以覆写该方法。
3,一般情况下调用 init方法或者调用initWithNibName方法实例化UIViewController, 不管调用哪个方法最终都会调用initWithNibName方法。
当控制器被initWithNibName:并加入到导航控制器的栈中时,它不会加载nib文件,直到nib文件被实际显示。因此控制器在nib文件中定 义的内容,例如label,可能还没有实例化。此时label可能只是一个nil指针,需要额外使用代码中实现的属性来存储信息。可以在 viewWillAppear:方法中对niv实例化的对象属性进行设置。
4, initWithCoder是一个类在IB中创建但在xocdde中被实例化时被调用的.比如,通过IB创建一个controller的nib文件,然后在xocde中通过initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用。
5,在使用IB的时候才会涉及到此方法的使用,当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。
相关文章推荐
- android *** Layout 04
- Espresso 常用方法简介
- 积跬步至千里系列之五--Serializable和Parcelable的区别
- linux命令集锦(连载)
- 淘宝技术这十年
- 饿汉式单例与懒汉式单例的讨论
- 内置函数filter
- CountDownLatch与CyclicBarrier的区别
- Angular.js(出库查看)
- Android中自定义样式与View的构造函数中的第三个参数defStyle的意义
- 关于php接收IE地址栏参数乱码问题
- cgroup: Control Group 分析 转载
- 面向对象编程(八)——this关键字
- android开发壁纸的设置
- opentsdb源码分析--启动
- 2016年1月25日 《1024伐木累》-小白篇之开发网站,三天!(中篇-2奇怪的IE)-总章节十一
- Linked List Cycle
- 递归式求解的三种方法
- Struts2 语法--result type
- sqlserver 随机数