引:最近写个项目,自己写的模块有这样的需求:一个页面排列着不同的产品卡(考虑用UITableView写),这些产品卡的顺序、是否显示会根据后台请求的数据,或者当前用户登陆账号的权限来显示(动态的),重构了几次代码,最后得到下面的结果:
1、实现思路
- 所谓动态是已确定所有卡片的情况下动态
- 用一个视图模型处理tableView的回调,数据请求逻辑,整个控制器级的逻辑,产品卡模型界面添加等
- 用一个BaseModel抽象类处理tableView的section级的抽象接口和属性声明(实现在相应子类实现,一个产品卡对应一个子类)
- 用一个BaseCell抽象类处理tableView的视图与数据关联
2、使用
*第一步: 根据BaseCell为基类定制相应的产品卡,根据BaseModel为基类定制相应产品卡模型,每个产品卡必须对应一个模型
- 第二步:使用ViewModel的addSubstanceModelName:方法和addSubstanceCellName:方法将模型和产品卡视图添加入视图模型
- 第三步:使用ViewModel的方法showOrders:调整产品卡的顺序,按照,自己想要的顺序显示
- 第四步:请求数据(如果请求数据为空,会将model的一个属性设置为NO,不会对改产品卡进行显示)
3、不知道怎么解决的问题
- 每个model和cell在ViewModel里面根据NSNumber进行定位的,因此在调用showOrders:方法时,需要类似这样传入:[self.viewModel showOrders:@[@(1),@(0),@(2)]];(下标从0开始)
- 每个model和cell根据基类进行个性定制,model和cell里面的内容不确定,需要根据需求确定,有必要需要修改ViewModel里面的代码(不知道怎么解决)
网友评论