有关UIViewController与UIVie
来源:互联网 发布:张艺谋奥运会知乎 编辑:程序博客网 时间:2024/04/19 18:51
UIViewController
分为下面三种情形创建 (依次调用的方法 顺序如下)
一.StoryBoard: 1.initWithCoder ; 2.awakeFromNib ; 3.loadView ; 4.viewDidLoad
二.Xib: 1.init ; 2.initWithNibName ; 3.loadView ; 4.viewDidLoad
三.纯代码: 1.init ; 2.initWithNibName ; 3.loadView ; 4.viewDidLoad
UIView
分为下面三种情形创建 (依次调用的方法 顺序如下)
一.StoryBoard: 1.initWithCoder ; 2.awakeFromNib
二.Xib: 1.initWithCoder ; 2.awakeFromNib
三.纯代码: 1.init ; 2.initWithFrame
1)awakeFromNib和initWithCoder:差别
awakeFromNib 从xib或者storyboard加载完毕就会调用
initWithCoder: 只要对象是从文件解析来的,就会调用
同时存在会先调用initWithCoder:
2)initWithCoder: & initWithFrame:
initWithCoder:使用文件加载的对象调用(如从xib或storyBoard中创建)
initWithFrame:使用代码加载的对象调用(使用纯代码创建)
注意:所以为了同时兼顾从文件和从代码解析的对象初始化,要同时在initWithCoder: 和 initWithFrame: 中进行初始化
3),无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。
手工创建视图时,loadView被调用时self.view还为nil。一般在该方法中手工定制view。
XIB创建视图时,loadView仍会被调用、loadView被调用时XIB定制的视图还没创建完成,若是再覆写该方法的话、会将XIB定制的视图覆盖掉。
所以,纯手工定制视图时,一般在该方法中写;XIB定制视图时、不要覆写该方法。
4),无论XIB还是代码创建都会调用viewDidLoad方法。
手工创建视图时,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
XIB创建视图时,viewDidLoad仍会被调用,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
所以,无论那种方式定制视图、都可以覆写该方法。
5),一般情况下调用 init方法或者调用initWithNibName方法实例化UIViewController;当控制器被initWithNibName:并加入到导航控制器的栈中时,它不会加载nib文件,直到nib文件被实际显示。因此控制器在nib文件中定义的内容,例如label,可能还没有实例化。此时label可能只是一个nil指针,需要额外使用代码中实现的属性来存储信息。可以在 viewWillAppear:方法中对nib实例化的对象属性进行设置
6),awakeFromNib此方法在使用IB的时候才会涉及到,当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。
- 有关UIViewController与UIVie
- 有关UIViewController与UIView的初始化创建
- 有关UIViewController与UIView的初始化创建
- Cocos2D与UIViewController混用
- Window与UIViewController
- UINavigationController与UIViewController
- UIViewController加载与销毁
- UIViewController加载与销毁
- UIviewcontroller与UIview
- UIView与UIViewController
- UIApplicationDelegate与UIViewController生命周期
- UIViewController与UIView的关系
- UIViewController与UIView的关系
- UIViewController与UIView的关系
- UIViewController与UIView的关系
- UIViewController的基本概念与生命周期
- UIViewController的基本概念与生命周期
- UIViewController的基本概念与生命周期
- 利用Jenkins+Phantomas进行前端性能自动化测试
- 《凤凰项目》读书笔记一
- 内核控制 上下文切换、进入和退出临界区.....
- 与自己交流最难能可贵
- Android系统调用
- 有关UIViewController与UIVie
- Spring 开启Annotation <context:annotation-config> 和 <context:component-scan>诠释及区别
- 解决WINDOWS2008上不识别EMULEX COE 11102万兆卡的问题
- web服务器工作原理
- ffmpeg的复习、学习、总结
- thymeleaf 笔记
- json
- Android中下载单个应用的方法
- Android---V7包的注解类使用技巧