黑马程序员技术交流社区
标题: iOS开发之 UIViewController视图显示到屏幕加载过程 [打印本页]
作者: FFFF001 时间: 2016-7-7 22:10
标题: iOS开发之 UIViewController视图显示到屏幕加载过程
本帖最后由 FFFF001 于 2016-7-7 22:14 编辑
#if 0
个人总结,如有错误,望请指正
iOS开发之 : 视图显示到屏幕加载过程(UIViewController)
#if 0
" UIViewController method
" 1 * method
" 2 * 加载显示过程
" 3 * 代码解析
"1. method
// - (void)loadView;
// - (void)viewDidLoad;
// - (void)viewWillAppear:(BOOL)animated;
// - (void)viewDidAppear:(BOOL)animated;
// - (void)viewWillDisappear:(BOOL)animated;
// - (void)viewDidDisappear:(BOOL)animated;
// - (void)viewDidUnload;
"2. 显示加载过程
" * 加载过程
" * 图释
"* 视图显示加载过程
* 当'视图控制器'控制视图(View)将要显示在屏幕上时..
* 1. 首先:会判断View是否存在(第一次加载时,View是不存在的)
* 2. 如果不存在,系统调用 loadView 方法...
* 3. 如果有 xib/nib 文件,可以直接把这个 xib 文件作为 View 的内容
* 4. 如果没有 xib,那么 loadView 就会创建一个空白的视图
* 5. 接下来就会调用 viewDidLoad 函数(调用这个函数的时候 View 已经存在了)
* 6. 然后视图将要显示就会调用 viewWillAppear 接着调用 viewDidAppear...
"* 图释
// 控制器(当视图要显示时)
// | 1.判断是否存在 View
// V (第一次加载时 View 是不存在的)
// ---------------------------
// | 存 | 2.不存在
// | 在 V 调用
// | loadView
// | |
// | V 3.xib\nib
// | ------------------
// | | |
// | V 有 没有 V
// | 4.xib文件作为View的content loadView create new View
// | ------------------
// | |
// | V 调用
// | 5.ViewDidLoad (调用这个函数的时候View已经存在了)
// | |
// | V
// -------------------> 6.ViewWillAppear
// |
// V
// ViewDidAppear
"3. 代码解析
#endif
- (void)loadView
{
// 默认只会调用一次(用来初始化xib文件中的控件\createNewView)
// 但是....内存警告后,会调用viewDidUnload,彻底销毁界面..
// 所以....如果再次进入界面时,会重新执行此方法和viewDidLoad方法..
[super loadView];
// 注意:重写父类的生命周期函数,必须调用父类的方法
NSLog(@"加载xib||createNewView..loadView..");
}
- (void)viewDidLoad
{
// 默认只执行一次(内存警告例外)
// 调用这个函数的时候 View 已经存在了..
// 这个方法可以进一步的初始化界面,自己的代码一般都写在此方法中.
[super viewDidLoad];
NSLog(@"进一步初始化界面..viewDidLoad..");
[self layoutUI];
}
- (void)viewWillAppear:(BOOL)animated
{
// View将要显示时调用(还未显示出来)
[super viewWillAppear:animated];
NSLog(@"将要显示视图..viewWillAppear");
}
- (void)viewDidAppear:(BOOL)animated
{
// View显示
[super viewDidAppear:animated];
NSLog(@"显示视图..viewDidAppear..");
}
- (void)viewWillDisappear:(BOOL)animated
{
// View将要disappear
[super viewWillDisappear:animated];
NSLog(@"将要不见..viewWillDisappear..");
}
- (void)viewDidDisappear:(BOOL)animated
{
// View Disappear
[super viewDidDisappear:animated];
NSLog(@"不见..viewDidDisappear..");
}
// 当界面不在显示(Disappear)时,如果内存警告了则会调用此方法,彻底销毁界面(如果调用了此方法,界面会被销毁,则再次进入本界面时重新执行 loadView 和 viewDidLoad 方法.
// *** 注意:方法由系统调用不可控
// *** - (voi)viewDidUnload;
#enif
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |