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
    }
}