RxSwift Swift - Select/Deselect tableView 中的多行
RxSwift Swift - Select/Deselect multiple rows in tableView
我可以在 tableView.rx 中 select 行,但我想知道如何获得最终 selection 的数组。我的意思是 selecting 一些行然后 deselecting 一些行的结果数组。
这是我的代码:
Observable.zip(tableView.rx.modelSelected(Country.self), tableView.rx.itemSelected).subscribe(onNext: { (selectedCountry, indexPath) in
print("2 selected Country is \(selectedCountry) and indexPath is \(indexPath.row)")
self.selectedCountries.append(selectedCountry)
我还希望看到 select 已标记的行。
感谢您的帮助。谢谢
首先你必须使用这个:
tableView.allowsMultipleSelection = true
然后你就可以用这些来做你想做的事了:
let selectedItems = tableView.rx.modelSelected(Country.self).subscribe { item in
print("selected: \(item)")
print("selected rows: \(self.tableView.indexPathsForSelectedRows)")
}
let deselectedItems = tableView.rx.modelDeselected(Country.self).subscribe { item in
print("deselected: \(item)")
}
这将产生一个 Observable 索引路径数组:
tableView.allowsMultipleSelection = true
let selectedItems = Observable.merge(
tableView.rx.itemSelected.asObservable(),
tableView.rx.itemDeselected.asObservable()
)
.flatMap { [tableView] _ in
Observable.just(tableView.indexPathsForSelectedRows ?? [])
}
我可以在 tableView.rx 中 select 行,但我想知道如何获得最终 selection 的数组。我的意思是 selecting 一些行然后 deselecting 一些行的结果数组。
这是我的代码:
Observable.zip(tableView.rx.modelSelected(Country.self), tableView.rx.itemSelected).subscribe(onNext: { (selectedCountry, indexPath) in
print("2 selected Country is \(selectedCountry) and indexPath is \(indexPath.row)")
self.selectedCountries.append(selectedCountry)
我还希望看到 select 已标记的行。
感谢您的帮助。谢谢
首先你必须使用这个:
tableView.allowsMultipleSelection = true
然后你就可以用这些来做你想做的事了:
let selectedItems = tableView.rx.modelSelected(Country.self).subscribe { item in
print("selected: \(item)")
print("selected rows: \(self.tableView.indexPathsForSelectedRows)")
}
let deselectedItems = tableView.rx.modelDeselected(Country.self).subscribe { item in
print("deselected: \(item)")
}
这将产生一个 Observable 索引路径数组:
tableView.allowsMultipleSelection = true
let selectedItems = Observable.merge(
tableView.rx.itemSelected.asObservable(),
tableView.rx.itemDeselected.asObservable()
)
.flatMap { [tableView] _ in
Observable.just(tableView.indexPathsForSelectedRows ?? [])
}