gpt4 book ai didi

ios - 如何允许编辑由 RxDataSources 支持的 TableView ?

转载 作者:行者123 更新时间:2023-11-28 11:27:54 27 4
gpt4 key购买 nike

我正在构建一个由 RxDataSources 支持的 TableView 。我想为此 TableView 启用编辑功能,以便用户可以删除项目。

我目前有这段代码:

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
}

但是,当我按下编辑按钮时,表格 View 单元格没有任何变化。我在左侧看不到红色的“-”按钮。我也无法向左滑动单元格以显示删除按钮。

我还需要做什么才能启用编辑?

最佳答案

我认为您的项目中某处已将 UITableView 设置为 editing 模式。跟随一段代码,例如,在 Github 中, 允许像这样在 UITableView 中编辑:

    extension EditingExampleViewController {
static func dataSource() -> RxTableViewSectionedAnimatedDataSource<NumberSection> {
return RxTableViewSectionedAnimatedDataSource(
animationConfiguration: AnimationConfiguration(insertAnimation: .top,
reloadAnimation: .fade,
deleteAnimation: .left),
configureCell: { (dataSource, table, idxPath, item) in
let cell = table.dequeueReusableCell(withIdentifier: "Cell", for: idxPath)
cell.textLabel?.text = "\(item)"
return cell
},
titleForHeaderInSection: { (ds, section) -> String? in
return ds[section].header
},
canEditRowAtIndexPath: { _, _ in
return true
},
canMoveRowAtIndexPath: { _, _ in
return true
}
)
}
}

我在 editing 模式下将 UITableView 设置为 false 并且我可以向左滑动以删除单元格

关于ios - 如何允许编辑由 RxDataSources 支持的 TableView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57650927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com