【发布时间】:2017-12-19 00:56:43
【问题描述】:
我的UIViewController 中有以下代码:
_ = viewModel.selectedCountryId.asObservable()
.distinctUntilChanged()
.scan((0, 0), accumulator: { (prev, curr) in
return zip(prev, curr)
})
.subscribe(onNext: {
let prevCell = self.tableView.cellForRow(at: IndexPath(row: previous, section: 0))
prevCell?.accessoryType = .none
let currCell = self.tableView.cellForRow(at: IndexPath(row: curr, section: 0))
currCell?.accessoryType = .checkmark
}).disposed(by: disposeBag)`
我不知道在 scan 上做什么,我相信通过查看一些 SO 帖子可以解决这个问题。
我想要实现的是选择一行并取消选择上一行,以使tableview具有右侧带有复选标记图标的单选机制。
我使用 viewModel 中的Variable<Int>,因为我需要保存我选择的行,以便在进行一些操作后将其传递给另一个视图控制器。
如有不妥之处,请多多指教。我仍然是 MVVM e RxSwift 的初学者。
编辑:
这是选择项目时的订阅:
_ = tableView.rx.itemSelected.subscribe(onNext: { [weak self] indexPath in
self?.viewModel.selectedCountryId.value = indexPath.row
})
【问题讨论】:
标签: ios iphone swift uitableview rx-swift