xib 等调用顺序
2014-07-16 16:55
239 查看
首先,区别程序化初始viewcontroller,半程序化初始和IB初始的区别.
1. 代码化初始:完全没有Xib之类的东西,通过纯代码实现加载.
2. 半代码化:设计xib,然后在程序中用代码调用xib来初始化.
3. 完全IB化:设计xib之类,然后加入到其它xib里.如MainWindow.xib中加入rootviewController,而rootviewcontroller通过xib设计.或者tabbarcontroller中加入多个由xib设计的viewcontroller,这些都是通过IB来初始化的.
好了,了解了这些,来看看各种方法的使用.
1. viewDidLoad:这个方法在三种方式下都会调用,而且是加载完view后调用.
2. loadView:代码初始化程序时设计view用. 半代码化时和完全IB化初始时亦调用,但会重写xib中的view,调用在initwithNibName之后,viewDidLoad之前.
3. initWithNibName:半代码化初始时使用. 完全IB化初始时不调用,UIViewController代码化初始时会通过init调用,且调用在[super init]中.
4. awakeFromNib:awakeFromNib这个方法是一个类在IB中被实例化是被调用的.看了帖子发现大家都推荐使用viewDidLoad而不要使用awakeFromNib,应为viewDidLoad会被多次调用,而awakeFromNib只会当从nib文件中unarchive的时候才会被调用一次.实际测试中发现,当一个类的awakeFromNib被调用的时候,那么这个类的viewDidLoad就不会被调用了,这个感觉很奇怪.
5.initWithCoder是一个类半代码化实例时被调用的.比如,通过IB创建一个controller的nib文件,然后在xocde中通过initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用.
调用顺序: [super init](可选)->initWithNibName(其实在super init中) ->int after self created->loadView->ViewDidLoad
autolayout 在didappear后调用的
1. 代码化初始:完全没有Xib之类的东西,通过纯代码实现加载.
2. 半代码化:设计xib,然后在程序中用代码调用xib来初始化.
3. 完全IB化:设计xib之类,然后加入到其它xib里.如MainWindow.xib中加入rootviewController,而rootviewcontroller通过xib设计.或者tabbarcontroller中加入多个由xib设计的viewcontroller,这些都是通过IB来初始化的.
好了,了解了这些,来看看各种方法的使用.
1. viewDidLoad:这个方法在三种方式下都会调用,而且是加载完view后调用.
2. loadView:代码初始化程序时设计view用. 半代码化时和完全IB化初始时亦调用,但会重写xib中的view,调用在initwithNibName之后,viewDidLoad之前.
3. initWithNibName:半代码化初始时使用. 完全IB化初始时不调用,UIViewController代码化初始时会通过init调用,且调用在[super init]中.
4. awakeFromNib:awakeFromNib这个方法是一个类在IB中被实例化是被调用的.看了帖子发现大家都推荐使用viewDidLoad而不要使用awakeFromNib,应为viewDidLoad会被多次调用,而awakeFromNib只会当从nib文件中unarchive的时候才会被调用一次.实际测试中发现,当一个类的awakeFromNib被调用的时候,那么这个类的viewDidLoad就不会被调用了,这个感觉很奇怪.
5.initWithCoder是一个类半代码化实例时被调用的.比如,通过IB创建一个controller的nib文件,然后在xocde中通过initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用.
调用顺序: [super init](可选)->initWithNibName(其实在super init中) ->int after self created->loadView->ViewDidLoad
autolayout 在didappear后调用的
相关文章推荐
- view 中函数的调用顺序,以xib自定义view为例
- 从storyboard与xib中加载与手动代码创建调用方法顺序
- Java构造器的调用顺序
- [置顶] Acitivity部分生命周期调用顺序
- Java学习笔记--构造器的调用顺序
- Java JPanel的getSize()方法 有时候得到的结果为0 的原因(涉及语句顺序、paint方法的调用)
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
- Java初始化块及构造函数调用顺序
- UIViewController中各方法调用顺序及功能详解
- 子类构造器调用父类构造器的顺序问题
- Matrix的set,pre,post调用顺序
- C++构造函数调用顺序
- 构造器的调用顺序
- 函数调用顺序的问题
- VC和view一些方法调用顺序
- View.invalidate()的调用顺序
- ViewController调用顺序问题,解决ViewController之间传递数据失败的问题
- java初始化构造函数调用顺序
- java 构造器的调用顺序
- c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)