UITableView组件 参考项目:https://github.com/indulgeIn/YBHandyList
主要思想:cell和模型绑定,一一对应,不用考虑cellForRow中的位置判断,根据数据源model的位置,决定cell的位置,可以更加专注于数据的处理
- 在 Podfile 中添加
pod 'SJTableViewComponent'。 - 执行
pod install或pod update。 - 导入
<SJTableViewComponent/SJTableViewComponent.h>。
- 下载 Demo,将Demo中的 SJTableViewComponent 文件夹所有内容并且拖入你的工程中。
- 导入
SJTableViewComponent.h。
Demo中 SJTableViewController 中查看使用方法。
cellModel和cell一一对应
cellModel实现协议 必须实现的方法:
@synthesize sj_cellHeight = _sj_cellHeight;
- (nonnull Class<SJTableViewCellProtocol>)sj_cellClass {
return [SJAvartarCell class];
}
cell实现协议可选择实现赋值的方法:
#pragma mark - SJTableViewCellProtocol
- (void)sj_configureCellByCellModel:(nonnull id<SJTableViewCellModelProtocol>)cellModel {
//cellModel为业务数据 根据数据做页面处理
SJAvartarCellModel *avartarModel = cellModel;
self.avartarLabel.text = avartarModel.leftTitle;
[self.avartarImageView sd_setImageWithURL:[NSURL URLWithString:avartarModel.avartarURL]];
self.arrowImageView.image = [UIImage imageNamed:avartarModel.arrowLocalPath];
}
删除implement中的tableView的预估高度代理,需要使用cell由内部空间撑开,外部tableView需设置
tableView.estimatedRowHeight = xx;
SJTableViewPlaceholderHeaderFooterModel *defaultHeader = [[SJTableViewPlaceholderHeaderFooterModel alloc] init];
defaultHeader.backgroundColor = [UIColor greenColor];
defaultHeader.height = 10;
section0.header = defaultHeader;
- (void)didSelectedAtIndexPath:(NSIndexPath *)indexPath;