专栏首页君赏技术博客托管UITableView多样式cell的第三方库ZHTableViewGroup

托管UITableView多样式cell的第三方库ZHTableViewGroup

ZHTableViewGroup

之前遇到过很多复杂的UITableView的结构,里面包含了很多复杂的cell,甚至一个Section包含很多种类的cell。通常在代理

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

返回不同的cell,甚至需要在在

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

写很多判断逻辑的跳转

现在有了这个库,做一些复杂的表格十分的方便,而且十分的简洁。

怎么安装

1.使用cocoapods进行安装

pod 'ZHTableViewGroup'

2.直接下载demo拖拽UITableViewDataSource到工程里面

怎么使用

文件的结构

在例子里面声明一个变量

@property (nonatomic, strong) ZHTableViewDataSource *dataSource;

在UITableView的代理实现这些方法

#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return self.dataSource.sectionNumber;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    ZHTableViewGroup *group = [self.dataSource groupWithIndex:section];
    return group.rowNumber;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ZHTableViewGroup *group = [self.dataSource groupWithIndex:indexPath.section];
    UITableViewCell *cell = [group cellWithIndexPath:indexPath];
    return cell;
}

#pragma mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    ZHTableViewGroup *group = [self.dataSource groupWithIndex:indexPath.section];
    [group didSelectRowAtIndexPath:indexPath];
}

我们只用在之前初始化数据添加到dataSource

- (void)stepTableViewData {
    ZHTableViewGroup *group = [[ZHTableViewGroup alloc]init];
    ZHTableViewCell *cellOne = [[ZHTableViewCell alloc]initWithTableView:self.homeTableView range:NSMakeRange(0, 6) cellHeight:44 cellClass:[HomeCellStyleOne class] identifier:KHomeCellStyleOneIdentifier];
    cellOne.configCellComplete = ^(UITableViewCell *cell, NSIndexPath *indexPath) {
        HomeCellStyleOne *cellOne = (HomeCellStyleOne *)cell;
        cellOne.textLabel.text = @"One Title";
        cellOne.detailTextLabel.text = @"One Detail";
    };
    cellOne.didSelectRowComplete = ^(UITableViewCell *cell, NSIndexPath *indexPath) {
        NSLog(@"cell->%@,indexPath->%@",cell,indexPath);
    };
    [group addTableViewCell:cellOne];

    ZHTableViewCell *cellTwo = [[ZHTableViewCell alloc]initWithTableView:self.homeTableView range:NSMakeRange(6, 5) cellHeight:44 cellClass:[HomeCellStyleTwo class] identifier:KHomeCellStyleOneIdentifier];
    cellTwo.configCellComplete = ^(UITableViewCell *cell, NSIndexPath *indexPath) {
        HomeCellStyleOne *cellTwo = (HomeCellStyleOne *)cell;
        cellTwo.textLabel.text = @"Two Title";
        cellTwo.detailTextLabel.text = @"Two Detail";
    };
    cellTwo.didSelectRowComplete = ^(UITableViewCell *cell, NSIndexPath *indexPath) {
        NSLog(@"cell->%@,indexPath->%@",cell,indexPath);
    };

    [group addTableViewCell:cellTwo];
    [self.dataSource addTableViewGroup:group];

    [self.homeTableView reloadData];

}

更多的文档请查看Wiki

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【已解决】UISwitch 执行 setOn:animated:没有任何的效果和动画

    513A073C-ED37-4C85-8BDB-92513B72E581 上图中有三个自带原生的 UISwitch 控件,我们手动切换是有效果的。...

    君赏
  • 关于 ZHTableViewGroup 的设计之路

    添加ZHTableViewGroup 分组->添加ZHTableViewCell 模块

    君赏
  • 【已解决】Mac Command Line程序如何标准输入和输出 命令参数

    君赏
  • iOS开发之有间距的UITableViewCell

    UITableView是最常用的一个iOS控件,现要做一个如下图的UITableView,其中白色部分就是cell,可是默认的UITableView中cell之...

    YungFan
  • CIO们如何评测移动应用平台(MEAP)的优劣?

    目前来看,移动应用平台不但包括MADP还包括MAM、MDM等管理模块。所以在功能方面,要包括移动开发功能与移动管理功能,一个相对完整的MEAP平台应该包含以下功...

    人称T客
  • SpringCloud微服务:Config组件,实现配置统一管理

    知了一笑
  • 《Kotin 极简教程》第12章 使用 Kotlin 集成Gradle 开发 第12章 使用 Kotlin 集成Gradle 开发《Kotlin极简教程》正式上架:

    由于 Kotlin 具有丰富的功能,如一等函数和扩展方法等,因此它可以保留和改进 Gradle 构建脚本的最佳部分——包括简明的声明式语法以及轻松制作 DSL ...

    一个会写诗的程序员
  • python: isspace函数

    JNingWei
  • 开源的API集成测试工具 v0.1.2 - 增强体验

    Hitchhiker 是一款开源的 Restful Api 集成测试工具,你可以在轻松部署到本地,和你的team成员一起管理Api。 详细介绍请看: https...

    用户1147588
  • 「镁客晚报」苹果批Surface Pro很弱,然而iOS被爆比安卓更易感染病毒!

    镁客网

扫码关注云+社区

领取腾讯云代金券