由于业务特殊大部分业务需求都是配置累页面同一个页面cell种类特别多所以同事封装了一套框架来简化开发,学习了一下,然后自己总结改动了一个简化版,改动了section和cellModel以及headerView的实现方式
正常我们在开发中用tableView时,每一个vc都会有一个tableView且都需要实现dataSource、delegate
正常数据到显示要通过以下方式传递:
- 数据传递到
vc(或者直接在vc请求) vc实现tableView的delegatecellForRowAtIndexPath方法找出对应data传递到cellcell填充数据展示- 一般我们
cell会持有data
然而如果cell样式过多:

然而如果data结构和cell样式都过多:

问题:
- 每一个
vc都实现tableView代理的代码重复 - 界面
cell样式和数据结构多的时候会导致cellForRowAtIndexPath里很多胶水代码 cell持有model,不同业务模块的相同样式cell会出现业务model依赖
解决方案:
- 提供
manager类来管理代理HHTableViewManager,所有vc只需要创建一个manager对象
|
|
- 为每一个
cell提供与之对应的cellModel就相当于vc的viewModel
cellModel与cell绑定(HHCellViewModelProxy),同时暴露cell可操作的属性及交互给调用方,cell实现协议(HHCellViewProxy),来实现数据传递
|
|
|
|
- 提供
section来管理cellModel(HHSectionProxy)的增删(可以把它当成一个Array)
|
|

manager管理section的增删

最终:manager会在cellForRow里找到section找到cellModell找到cell

|
|
最后我们创建页面的代码
cell 和cellModel是不依赖业务的,我们可以把他们放在统一的一个组件库里
