描述
这是一个帮助你快速构建表格视图的类。
所有表格单元格都是由数据模型驱动的。
通过这种方式,你不必关心表格的原始代理。只需使用模型来控制单元格即可。
因此,您控制器中的表格视图代码可能会变得很简洁。
除此之外,我也考虑到有时你可能需要自己实现表格的一些代理,以自定义表格的性能,因此我提供了表格可能包含的所有原代理的映射。
我还提供了一些基本的快速 API 用于表格的常用操作,这样你可能只需要开启一个属性即可实现你想要做的很多事情。
我所做的一切就是为了更方便地构建表格视图,我正在一步一步改进这个工具类。
描述
这是一个可以帮你快速创建列表视图的工具类。
所有的cell都是以数据模型驱动的。
这样的话,你将不再关心TableView原始的代理,只需使用模型来控制cell即可。
因此,你控制器中tableView的代码将会变得更简洁~
此外,考虑到有时为了定制一些TableView的行为,你可能需要自己实现TableView的一些代理,所以我同样提供了TableView可能包括的所有代理的映射。
并且我还提供了一些快捷的常用API,这样,你可能只需要开启一个属性即可做到你想要做的很多事情。
我所做的一切都是为了更便捷地布置一个列表视图,我在一点点的改进这个工具类。
功能
-
简化您的 ViewController。
-
提供所有默认实现的方法:Delegate/DataSource/Prefetch。如果您没有想要定制的部分,则不需要实现它们。
-
提供cellShowAnimation Delegate。仅用它来自定义每个cell的展示动画。
-
自动处理无数据占位图。如果Helper的数据源为空,它将显示“无数据视图”。
-
简化选择操作。
-
自动计算行高并缓存。
功能
-
解耦。
-
为UITableView的delegate/dataSource/prefetch提供所有代理的默认实现。如果没有特殊定制需求,您不需要实现这些代理。
-
补充cell出现动画。您可以使用它来定制每个cell的展现动画。
-
自动处理占位图。当数据源为空时自动展示无数据的占位图。
-
简化TableView列表的选择和多选操作。
-
非固定行高cell将自动计算行高并缓存。
使用方法
首先,将其拖入您的项目中或使用cocoapods。
pod 'DWTableViewHelper'
要使用DWTableViewHelper,您需要遵循以下步骤:
-
您的cell必须是DWTableViewHelperCell的子类。
-
您使用的模型必须是DWTableViewHelperModel的子类。
您还需要初始化Helper对象,例如,与tableView一起初始化。
-(UITableView *)tabV {
if (!_tabV) {
_tabV = [[UITableView alloc] initWithFrame:self.view.bounds style:(UITableViewStyleGrouped)
];
self.helper = [[DWTableViewHelper alloc] initWithTabV:_tabV dataSource:self.dataArr];
}
return _tabV;
}
我已经做了很多工作来防止在发布模式下崩溃,但这不是您故意不设置属性的原因。
因此,您最好在Helper或Model中至少设置一次cellClassStr、cellID。
并正确使用MultiSection模式,以区分二维数组还是一维数组。
其他一些使用方法您可以自己尝试。
我的注释涵盖了所有细节。
如何使用
首先,您应该将所需文件拖入项目中,或者您也可以使用Cocoapods来集成它。
pod 'DWTableViewHelper'
当使用DWTableViewHelper时,您应该遵循以下要点:
-
您使用的cell应该是DWTableViewHelperCell的子类。
-
您使用的模型应该是DWTableViewHelperModel的子类
并且记得在初始化时同时初始化Helper类。例如:
-(UITableView *)tabV {
if (!_tabV) {
_tabV = [[UITableView alloc] initWithFrame:self.view.bounds style:(UITableViewStyleGrouped)
];
self.helper = [[DWTableViewHelper alloc] initWithTabV:_tabV dataSource:self.dataArr];
}
return _tabV;
}
我已经做了很多工作来防止发布模式下崩溃,但这并不是您故意出错的原因。
因此,您最好在Helper或Model中至少设置一次cellClassStr、cellID。
同时正确使用MultiSection属性,以区分二维数组还是一维数组。
一些其他的使用方法相信您从属性名就能看出,您也可以自己尝试一下。
我的注释还是很全面的。
联系我们
您可以通过访问我的GitHub或发送电子邮件至[email protected]来向我说一些建议或报告bug,我将不胜感激。
如果喜欢,请给我一个star吧。
联系作者
您也可以通过在我的GitHub上给我留言或者发送电子邮件[email protected],向我提出一些建议或指出bug,我将不胜感激。
如果你喜欢这个小工具,别忘了给我一个star哦,爱你~