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
    }
}
Другие вопросы по тегам