M80TableViewComponent
UITableView 的组件化解决方案
| 主要特性 | |
|---|---|
| 不用再和 IndexPath 及数组越界打交道 | |
| 权责分离,和冗长的 UITableView Adapter 说再见 | |
| UITableViewCell 自动重用 | |
| 数据驱动的构建方式 | |
| 安全的模型视图映射关系 | |
| 单向绑定 | |
| 灵活组装 | |
| 自动高度缓存和简单的高度预计算支持 | |
| 支持 ListDiff | 
系统要求
- iOS 9.0 及以上
- Xcode 11.0
集成
Cocoapods
pod 'M80TableViewComponent'快速使用
定义 cell component
@implementation M80ItemComponent
- (Class)cellClass
{
    return UITableViewCell.class;
}
- (CGFloat)height
{
    return 44.0;
}
- (void)configure:(UITableViewCell *)cell
{
    cell.textLabel.text = self.title;
}
@end
组装使用
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSArray *components = @[[M80ItemComponent component:@"Text" vcName:@"M80TextViewController"],
                            [M80ItemComponent component:@"ListDiff" vcName:@"M80ListDiffViewController"],
                            [M80ItemComponent component:@"Feed" vcName:@"M80FeedViewController"]];
    
    M80TableViewSectionComponent *section = [M80TableViewSectionComponent new];
    section.components = components;
    
    M80TableViewComponent *tableViewComponent = [[M80TableViewComponent alloc] initWithTableView:self.tableView];
    tableViewComponent.sections = @[section];
    tableViewComponent.context = context;
    
    self.tableViewComponent = tableViewComponent;
}
主要类预览
| 类 | 概述 | 
|---|---|
| M80TableViewComponent | TableView 组件,可持有 0 至 n 个 M80TableViewSectionComponent | 
| M80TableViewSectionComponent | Section 组件,对应 UITableView Section,可持有 0 至 n 个 M80TableViewCellComponent | 
| M80TableViewCellComponent | Cell 组件,与 UITableViewCell 一一对应 | 
| M80TableViewViewComponent | View 组件,对应每个 Section 的 UITableViewFooter 和 UITableViewHeader | 
| M80TableViewComponentContext | TableView 组件上下文信息 |