开头
界面跳转-modal
- (void)btnClick {
testViewController *vc = [testViewController new]
//全屏弹出
vc.modalPresentationStyle = UIModalPresentationFullScreen
[self presentViewController:vc animated:YES completion:nil]
}
- (void)back {
[self dismissViewControllerAnimated:NO completion:nil];
}
视图生命周期
系统相关函数
- 创建view,此时刚开始view为nil,如果需要自定义view,则不需要调用
super的方法
- (void)loadView {
[super loadView];
NSLog(@"ViewController - loadView");
}
- 进行控件加载,但是并不能显示,也没有被添加到界面上
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"ViewController - viewDidLoad");
}
- 此时才会开始添加子控件,才会显示相应控件,有对应的视图层次结构,这个函数结束之后,界面才会出现
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSLog(@"ViewController - viewWillAppear");
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"ViewController - viewDidAppear");
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
NSLog(@"ViewController - viewWillDisappear");
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSLog(@"ViewController - viewDidDisappear");
}
界面出现的顺序
ViewController - loadView
ViewController - viewDidLoad
ViewController - viewWillAppear
ViewController - viewDidAppear
界面切换的顺序
testViewController - loadView
testViewController - viewDidLoad
ViewController - viewWillDisappear
testViewController - viewWillAppear
testViewController - viewDidAppear
ViewController - viewDidDisappear
界面跳回的顺序
testViewController - viewWillDisappear
ViewController - viewWillAppear
ViewController - viewDidAppear
testViewController - viewDidDisappear
testViewController - dealloc
实际使用
- 我在实际开发中,最常操作的还是在
loadView和viewDidLoad
loadView是在控制器的view为nil的时候加载的,也就是说,当你需要更换控制器的根view时,可以在这个函数中写,而且不需要调用super的方法
- 那么,控件加载一般是写在
viewDidLoad中
总结
- 界面跳转就好比叠盘子,一个个叠上去,最下面的会一直被保存,而当上面的界面被撤掉后,则直接被销毁
- 在整个界面显示的过程中,数据的加载和显示,其实是分开的