HTTableViewDataSourceDelegate 0.0.2

HTTableViewDataSourceDelegate 0.0.2

测试测试通过
语言编语言 Obj-CObjective C
许可协议 MIT
发布最新版本2016年12月

Zeyu Tao维护。



  • netease

在“UIViewController 瘦身”这一热门话题中,UITableView 是主要目标。
HTTableViewDataSourceDelegate 将 view controller 中 table view 的 dataSource 接口及与 UI 无关的 delegate 接口(包括 cell 高度计算方法)进行了抽象。

特性

  • 实现 cell 高度计算
  • 以组合方式实现多个 dataSource 的合并显示
  • 抽象 UITableViewDelegate 的高度计算接口,其余接口仍然可以在页面中实现,不会影响与页面耦合较多的接口

用法

导入头文件

#import "HTTableViewDataSourceDelegate.h"
#import "NSArray+DataSource.h" //数据列表在这里完成协议的遵守,参考下面对model参数的解释
#import "MyCellStringModel.h"   //cell model类型
#import "MyTableViewCell.h"     //cell类型,遵守协议HTTableViewCellModelProtocol

构造数据集合

- (id <HTTableViewDataSourceDataModelProtocol>)arrayCellModels
{
    NSMutableArray * models = [NSMutableArray new];
    for (NSString * arg in @[@"A", @"B", @"C", @"D", @"E", @"F"]) {
        [models addObject:[MyCellStringModel modelWithTitle:arg]];
    }
    return models;
}

构造 dataSourceDelegate 实例

    id <HTTableViewDataSourceDataModelProtocol> cellModels = [self arrayCellModels];//用户的数据列表
    id <UITableViewDataSource, UITableViewDelegate> dataSource
    = [HTTableViewDataSourceDelegate dataSourceWithModel:cellModels
                                     cellTypeMap:@{@"MyCellStringModel" : @"MyTableViewCell"}// 数据类到cell类名的映射
                               tableViewDelegate:self
                               cellConfiguration:
       ^(UITableViewCell *cell, NSIndexPath *indexPath) {
        if (indexPath.row % 2 == 0) {
            cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        }
    }];

使用 dataSourceDelegate

    self.demoDataSource = dataSource;//持有 dataSource
    _tableview.dataSource = dataSource;
    _tableview.delegate = dataSource;
    [_tableview reloadData]; 

系统要求

该项目最低支持 iOS 7.0Xcode 7.0

许可证

HTTableViewDataSourceDelegate 使用 MIT 许可协议,详情见 LICENSE 文件。