CXYTableViewExt
CXYTableViewExt 是用来简化 UITableView - Cell 配置的库。特别是对于拥有多种类型的 Cell,逻辑上将更加清晰,所见即所得。
几乎在你用到 UITableView 的地方,都可以使用 CXYTableViewExt 来简化代码和逻辑。
开始使用
1、简单使用,无需设置 dataSource 和 delegate,也不需要注册 Cell
如需实现上面的UI界面:
1、让 ArrowTextCell 实现 CXYTableItemProtocol 的协议,Cell 可以是纯代码 也可以是 Xib。
1 | objc复制代码@interface ArrowTextCell ()<CXYTableItemProtocol> |
2、类似 Masonry block 写法, 内部会自动帮你注册Cell,设置默认代理对象和数据源。
1 | objc复制代码// ViewController.m |
2、类设置页 - delegate 方式让 ViewController 响应 Cell 的操作
1、有时我们需要响应 Cell 里的一些动作,我们可以在配置 Cell 时,给它设置一个代理对象(delegate)
1 | objc复制代码- (void)addCellClass:(Class)cellClass data:(id)data delegate:(id)delegate |
2、在 Cell 中定义一些代理对象( delegate)需要实现的协议
1 | objc复制代码@protocol SwitchCellDelegate <NSObject> |
3、让这个代理对象遵循你的协议,从而将 Cell 的动作传递给 delegate 响应
1 | objc复制代码- (void)bindViewData { |
3、列表 - 下拉刷新或上拉加载更多
每次你的数据变化时,直接重新绑定数据就行。如果你觉得性能有影响,那可以使用 CXYTable.h 里的一些插入、添加、更新、删除方法来实现更新。
1 | objc复制代码- (void)requestPage:(NSInteger)page { |
4、拥有 Header & Footer
同样,你的 Header 和 Footer 也需要实现 CXYTableItemProtocol 的协议。从配置项来看,几乎是所见即所得的。
1 | objc复制代码- (void)bindViewData { |
更多操作
在 CXYTable.h 文件里面提供了很多操作方法:
1 | objc复制代码// 可使用自定义的 |
Tip: 有些第三方统计SDK可能会 hook UITableView,默认给 tableView.delegate 一个对象。这会影响到 CXYTableViewExt 里内部设置默认数据源判断,这时,你需要手动设置默认的数据源和代理。
1 | objc复制代码[self.tableView useDefaultDataSource]; |
源码:
OC版: CXYTableViewExt-OC
Swift版:CXYTableViewExt-Swift
本文转载自: 掘金