美文网首页
更轻量的ViewControllers

更轻量的ViewControllers

作者: 消费后生产 | 来源:发表于2016-11-22 15:54 被阅读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 或其他内部状态。

    相关文章

      网友评论

          本文标题:更轻量的ViewControllers

          本文链接:https://www.haomeiwen.com/subject/aqnppttx.html