一、视图控制器的介绍
1、视图控制器与视图的关系
a) 视图控制器是传统的Model-View-Controller(MVC)设计模式中的控制器
b) UIViewController提供了许多控制器的基本功能,因为它是所有控制器的基类
c)视图控制器负责创建和管理一组视图,它本身就提供了一个视图,称为该控制器的根视图(view),协调管理数据和视图之间的交互
3、视图控制器的创建
(1)创建
UIViewController viewController = [[UIController alloc] init];
_window.rootViewController = viewController;
(2) 创建方式
(a) 代码创建
(b) xib文件创建
注:推荐使用代码方式创建,性能较高
(3)根视图的创建方式
a) 视图控制器是通过loadView⽅方法创建的根视图
b) loadView⽅法调⽤用的前提条件:
1、当前视图控制器的根视图为空
2、通过getter⽅法访问当前控制器的根视图
- (void) loadView {
// 创建每个控制器的根视图
UIView *rtView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view.backgroundColor = [UIColor orangeColor];
self.view = rtView;
}
1、模态视图的使用
a) 通过视图控制器的presentModalViewController: 方法弹出的视图我们都称为模态视图
b) 模态视图出现的场景一般是临时弹出的窗口,譬如:登陆窗口
c) 模态视图弹出时通过modalTransitionStyle属性设置不同的动画效果
d) 调用 dismissModalViewControllerAnimated: 方法关闭窗口
// 创建视图控制器
ModalViewController *mViewCtrl = [[ModalViewController
alloc]
init];
//设置视图弹出时的动画效果
mc.modalTransitionStyle
= UIModalTransitionStyleFlipHorizontal;
// 通过模态视图的形式打开视图控制器
[self
presentModalViewController:mViewCtrl
animated:YES];
2、模态视图的原理
我们用 presentModalViewController: animated:打开一个控制器,是把当前控制器的根视图添加到window上,我们都知道根视图控制器不做显示而且我们通过设置当前控制器的根视图为透明时,视图下面显示的时window,说明上一个控制器的根视图已经从window上移除掉了,那么我们指导原理是否可以自己写一个方法弹出视图,并添加我们自己想要的动画效果
3、模态视图的使用场景
1) 收集用户输入信息
2) 临时呈现一些内容
3) 临时改变工作模式
4) 显示一个新的view层级
三、UIViewController生命周期
// 创建载⼊入根视图
- (void)loadView;
//视图载⼊入完成
- (void)viewDidLoad;
//视图将出现在屏幕之前
- (void)viewWillAppear:(BOOL)animated;
//视图已在屏幕上渲染完成
- (void)viewDidAppear:(BOOL)animated;
//视图将被从屏幕上移除之前执⾏行
- (void)viewWillDisappear:(BOOL)animated;
//视图已经从屏幕上移除
- (void)viewDidDisappear:(BOOL)animated;
//接收到内存警告
- (void)didReceiveMemoryWarning;
a) 代理方式;
b) KVO观察者模式;
c) 通知;
d) 单例模式(init方法也需要注意);
e) block;
f) 非代理