更轻量的ViewControllers
文章目录:
一、整洁的代码(划分ViewController中的代码)
二、ViewController容器(使用ChildVC)
一、整洁的代码
1.使用MVC模式减轻VC中的代码.
各种各样的任务穿梭于 models,controllers 和 views 之间。为了避免让 view controllers 做所有的事,我们将尽可能地把这些任务划分到合适的地方,这样有利于阅读、维护和测试。
2.更加整洁的MVVM模式.
Model:业务数据模型
View:展示数据,与用户交互
ViewModel: 通过持有的model实现其对应的view的业务逻辑,通过一些属性控制其对应的view的一些状态.
实现流程: view-->事件-->请求处理-->调整view
view:与用户交互
事件:view接收的用户事件(点击等) 或者系统事件(viewWillAppear)
请求处理:viewModel请求接口获取数据(model),通过持有model数据处理相应业务逻辑并保存处理结果的相应状态数据
调整view:view从viewModel中获取相应状态数据及model中所需的数据调整自身展示
3.让view可复用
有时多种 model 对象需要用同一类型的 view 来表示,这种情况下,我们可以进一步让 view 可以复用。首先,我们给 view 定义一个 protocol,需要用这个 view 显示的对象必须遵循这个 protocol。然后简单修改 view的设置方法,让它可以接受遵循这个 protocol 的任何对象。这些简单的步骤让 view 和任何特殊的 model 对象之间得以解耦,让它可适应不同的数据类型。
protocol的两种场景:
1.A持有B,A需要为B提供服务,则A设为B的代理,A必须实现protocol中必须的服务
2.A持有B,B需要为A提供服务,则B必须实现A所需的protocol服务
二、View Controller容器
1.须在 child view controller 和 parent view controller 之间建立消息传递的渠道。
参考抽屉的实现源码理解
2.parent view controller 应该只关心两个任务:布局 child view controller 的 root view,以及与 child view controller 暴露出来的 API 通信。它绝不应该去直接修改 child view tree 或其他内部状态。