ReactiveDataDisplayManager
这是处理可滚动列表或集合的整体方法。
关于
此框架旨在加快开发类似 UITableView 或 UICollectionView 的可滚动集合的速度,并提供扩展集合功能的新方法。
重大更改
我们在 7.0.0 版本中进行了一次大规模的重构。如果您使用的是 6 版或更早的版本,请阅读我们的迁移指南。
当前支持的功能
- 无需自己实现代理和数据源即可填充单元格
- 无需重新加载即可插入、替换或删除单元格
- 在集合内展开或折叠单元格
- 在集合内移动或拖放单元格
- 自定义章节标题和索引标题
使用方法
配置标签简单列表的逐步示例。
准备单元格
您可以FROM xib或从代码来布局您的单元格。这无关紧要。只需扩展您的单元格到ConfigurableItem
,当单元格被创建时填充子视图。
import ReactiveDataDisplayManager
final class LabelCell: UITableViewCell {
// MARK: - IBOutlets
@IBOutlet private weak var titleLabel: UILabel!
}
// MARK: - ConfigurableItem
extension LabelCell: ConfigurableItem {
typealias Model = String
func configure(with model: Model) {
titleLabel.text = model
}
}
准备集合
只是从集合中调用rddm
- 为您的需求添加插件
- 构建您的ReactiveDataDisplayManager
final class ExampleTableController: UIViewController {
// MARK: - IBOutlets
@IBOutlet private weak var tableView: UITableView!
// MARK: - Private Properties
private lazy var ddm = tableView.rddm.baseBuilder
.add(plugin: .selectable())
.build()
// MARK: - UIViewController
override func viewDidLoad() {
super.viewDidLoad()
fill()
}
}
填充集合
将模型转换为生成器并调用 ddm.forceRefill()
private extension MainTableViewController {
func fill() {
let models = ["First", "Second", "Third"]
for model in models {
let generator = TitleTableViewCell.rddm.baseGenerator(with: model)
generator.didSelectEvent += { [weak self] in
// do some logic
}
// Add generator to adapter
ddm.addCellGenerator(generator)
}
ddm.forceRefill()
}
}
享受
如你所见,你不需要实现 UITableViewDelegate
和 UITableViewDataSource
。这些协议被隐藏在 ReactiveDataDisplayManager 中。你可以通过添加插件和替换生成器来扩展表格功能。
安装
只需像这样将 ReactiveDataDisplayManager 添加到你的 Podfile
pod 'ReactiveDataDisplayManager' ~> 7.3
变更日志
本项目的所有重大变更都将记录在此文件中 CHANGELOG.md。
问题
对于问题,请直接在 主 ReactiveDataDisplayManager 仓库 中提交。
贡献
如果您想为此软件包做出贡献(比如改进文档、修复 bug 或添加酷炫的新功能),请首先审查我们的贡献指南,并发送您的 pull 请求。
我们始终欢迎您的 PR。