RxDataSources - Как добавить пользовательскую пустую ячейку, когда нет данных
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
и я хочу отобразить эту ячейку, если элементы пустые. Как я мог этого добиться.
1 ответ
Решение
Источник данных 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
}
}