Я создаю табличное представление, поддерживаемое RxDataSources. Я хочу разрешить редактирование этого табличного представления, чтобы пользователь мог удалять элементы.
В настоящее время у меня есть этот код:
var strings = [String]() {
didSet {
observable.accept(strings)
}
}
let observable = BehaviorRelay(value: [String]())
let disposeBag = DisposeBag()
override func viewDidLoad() {
tableView.dataSource = nil
let dataSource = RxTableViewSectionedAnimatedDataSource<StringSection>(configureCell: {
(dataSource, collectionView, indexPath, string) -> UITableViewCell in
let cell = collectionView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = string
return cell
})
observable.asObservable()
.map {
[StringSection(items: $0)]
}
.bind(to: self.tableView.rx.items(dataSource: dataSource))
.disposed(by: disposeBag)
// X
strings = ["Item 1", "Item 2", "Item 3"]
}
Чтобы сделать это редактируемым, я добавил это в место, отмеченное X:
tableView.rx.itemDeleted
.subscribe(onNext: { _ = self.strings.remove(at: $0.row) })
.disposed(by: disposeBag)
navigationItem.rightBarButtonItem = editButtonItem
А также переопределил этот метод:
override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
return .delete
}
Однако, когда я нажимаю кнопку редактирования, для ячеек табличного представления ничего не меняется. Я не вижу красной кнопки "-" слева. Я не могу провести ячейку влево, чтобы открыть кнопку удаления.
Что еще мне нужно сделать, чтобы разрешить редактирование?