VIPERBuilder
使用 VIPER 架构以清晰的方式构建应用的框架。
VIPER 本身有几个问题
- 样板代码过多
- 由于管理了很多类,可能导致潜在的 retain 循环
- 设置过程中的认知开销
本框架旨在通过一组基类来划分您应用的功能,并使用构建对象来管理连接来解决这个问题。
安装
CocoaPod
将 pod VIPERBuilder
添加到您的 Podfile 中
运行 pod install
使用方法
-
根据需要,创建
VIPERInteractor
,VIPERPresenter
和VIPERRouter
的子类 -
使用指定的新子类来创建一个对
VIPERBuilder
实例的强引用。Swift 的懒加载将确保构建对象在调用时可用lazy var viperBuilder: VIPERBuilder<NewInteractor, NewPresenter, NewRouter> = { return VIPERBuilder(controller: self) }()
注意:如果不需要所有的类来实现,将超类传递给构建器对象是支持的
对于更详细的实现,请查看此仓库中包含的演示项目
代码分离
本框架为VIPER的三个主要部分:交互器(Interactor)、展示者(Presenter)、路由器(Router)提供三个基础类。每个类应该包含某些代码,并因特定原因对其他类有引用,但可以通过子类扩展这些功能。
交互器
目的
- 用户交互(直接的和通过从其他类委托的)
- 数据检索/变更
引用使用
- 展示者:在检索或变更数据后用于更新视图
- 路由器:根据采取的操作进行导航
展示者
目的
- 配置视图/视图模型(实体对象)
- 显示模态/加载屏幕
引用用例
- 控制器:展示模态窗口/错误消息
- 交互器:可以作为从视图中发出的任何操作的代理使用
路由器
用途
- 导航(将视图推入 UINavigationController 的堆栈中)
参考用例
- 导航控制器:用于推送屏幕