背景
- iOS原生开发中,VC逻辑过于臃肿的case中,有相当的部分是来自UITableView的复杂逻辑难以抽离;
- 当一个VC中主要展示形式是feed流,TableView自然的作为页面容器;当feed流中展示的cell种类越来越多,业务来源越趋于复杂时,如果在开始未考虑长远的迭代方向和页面行为,渐渐地 逻辑的梳理和阅读变的越发痛,逻辑的分类和抽离变的越发难;
主要解耦设计
- 子模块类(通常以 相似 && 相邻 && 同业务归属等属性 来划分):
- 遵循tableVIew的 数据源和代理协议,类注册于 页面tableView containerVC中;
- 实现tableVIew所需 代理+数据源 方法;
- 注册对数据源的监听 / 回调逻辑,触发刷新;
- 页面tableView containerVC中:
- 注册子模块类/对象,用于计算 tableView 数据源方法返回值 和 转发代理方法事件;
- 实例化 并持有 pageInfoCenter 对象,存入页面基本信息;
脚手架:
- RAC 函数式 / 响应式编程 范式;
- pageInfoCenter 对象,作为页面所需信息的汇总,共享于页面内所有模块;
适用场景
- 相似 cell 相邻
- cell 复用场景少
- 货架类 等页面