RxDataSources - 如何在没有数据时添加自定义空单元格
RxDataSources - How to add a custom empty cell when there's no data
struct MyViewModel {
var items: Observable<String>
//....
}
// In view controller
viewModel.items.bind(to: tableView.rx.items(cellIdentifier: "Cell", cellType: MyCell.self)) { index, model, cell in
//...
}
.disposed(by: disposeBag)
如果我有另一个名为 EmptyCell
的单元格,并且我想在项目为空时显示此单元格。我怎样才能做到这一点。
RxDataSources 数据源应包含要在单元格中显示的任何状态或数据。出于这个原因,您实际上可能希望为您的 SectionItem 提供一个枚举,而不是一个简单的字符串。
enum CellType {
case empty
case regular(String)
}
typealias Section = SectionModel<String, CellType>
然后,当绑定您的 "CellType" Observable 时,您可以相对容易地使用 configureCell
单元工厂来定义您希望为每个案例出列的单元格。
例如
dataSource.configureCell = { _, _, _, cellType in
switch cellType {
case .empty: /// Dequeue empty cell
case .regular(let string): // Dequeue regular cell and set string
}
}
struct MyViewModel {
var items: Observable<String>
//....
}
// In view controller
viewModel.items.bind(to: tableView.rx.items(cellIdentifier: "Cell", cellType: MyCell.self)) { index, model, cell in
//...
}
.disposed(by: disposeBag)
如果我有另一个名为 EmptyCell
的单元格,并且我想在项目为空时显示此单元格。我怎样才能做到这一点。
RxDataSources 数据源应包含要在单元格中显示的任何状态或数据。出于这个原因,您实际上可能希望为您的 SectionItem 提供一个枚举,而不是一个简单的字符串。
enum CellType {
case empty
case regular(String)
}
typealias Section = SectionModel<String, CellType>
然后,当绑定您的 "CellType" Observable 时,您可以相对容易地使用 configureCell
单元工厂来定义您希望为每个案例出列的单元格。
例如
dataSource.configureCell = { _, _, _, cellType in
switch cellType {
case .empty: /// Dequeue empty cell
case .regular(let string): // Dequeue regular cell and set string
}
}