本库的README
- CommonTableViewTool 是一个可以减少UITableView代理和数据源代码的工具项目。通过继承工具中的基类Controller、View和Model,利用多态、工厂模式、继承特性,将UITableView的header、footer以及cell统一处理。在项目很庞大时,会感到非常非常节约代码量,提高项目的高内聚低耦合性。
完全遵循iOS的MVC设计模式
以下是用法
通常您只需进行以下操作(以下演示的是最简单的只有cell的情况,如果需要添加header视图或者footer视图,本git项目中TableViewToolDemo文件夹下有介绍):
M:新建模型 @interface DemoModel : CommonTableViewCellModel V:新建视图 @interface DemoCell : CommonTableViewCell C:新建控制器 @interface DemoTableVC : BaseTableViewToolVC
---------------------------- DemoTableVC.m 里面 ----------------------------
- (void)viewDidLoad { [super viewDidLoad];
DemoModel *model1 = [DemoModel new]; model1.name = @"张三"; DemoModel *model2 = [DemoModel new]; model2.name = @"李四"; DemoModel *model3 = [DemoModel new]; model3.name = @"王五";
CommonSectionModel *section = [CommonSectionModel new]; section.modelArray = @[model1, model2, model3]; self.tableViewTool.dataArr = @[section]; [self.tableView reloadData]; }
- (void)tableView:(UITableView *)tableView didSelectRowAtSection:(NSInteger)section row:(NSInteger)row selectIndexPath:(NSIndexPath *)indexPath model:(CommonTableViewCellModel *)cellModel tableViewTool:(CommonTableViewTool *)tool {
// 如果需要点击cell进行处理事件,可以在这里写 DemoModel *model = (DemoModel *)cellModel; NSLog(@"点击了 %@", model.name); }
/** 这个方法一定要实现 */
- (NSDictionary
*>) returnCell_Model_keyValues { return @{NSStringFromClass([DemoModel class]) : @{cellKEY : NSStringFromClass([DemoCell class]), isRegisterNibKEY: @NO}}; }
---------------------------- DemoCell.m 里面 ----------------------------
- (void)setupData:(CommonTableViewCellModel *)cellModel section:(NSInteger)section row:(NSInteger)row tableView:(UITableView *)tableView { DemoModel *model = (DemoModel *)cellModel;
// 在这里进行给子类Cell身上的一些控件赋值 self.textLabel.text = model.name; }