I can select rows in tableView.rx but I'm wonder how to get array of final selection. I mean the result array of selecting some rows and then deselecting some rows.
Here's my code:
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)
I want also see selected rows as marked.
I appreciate for your helping. thanks
First you have to use this:
tableView.allowsMultipleSelection = true
Then you could use these to do what ever you want:
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)")
}
This will produce an Observable array of indexPaths:
tableView.allowsMultipleSelection = true
let selectedItems = Observable.merge(
tableView.rx.itemSelected.asObservable(),
tableView.rx.itemDeselected.asObservable()
)
.flatMap { [tableView] _ in
Observable.just(tableView.indexPathsForSelectedRows ?? [])
}