更轻量的ViewControllers

2016-11-22  本文已影响91人  消费后生产

文章目录:

一、整洁的代码(划分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 或其他内部状态。

上一篇下一篇

猜你喜欢

热点阅读