首先很抱歉标题混乱,但我实在想不出更好的东西(如果你想,请编辑)。
我有一个使用Coordinator模式和RxSwift的应用程序,所以我需要将所有与导航相关的内容传递给Coordinator,这样它就可以处理导航逻辑。
在一个视图控制器中,我有UITableView
的单元格,其中有UIButton
的单元格。对于这种情况,我有一个:
actionButton.rx.tap.bind(to: viewModel.chapterAction).disposed(by: disposeBag)
chapterAction
是一个PublishSubject<Void>
,因为它只反映了一个按钮点击,但我需要将更多信息传递给协调器,所以稍后我将此chapterAction
转换为:var showChapter: Observable<Chapter> = self.chapterAction.mapTo(self.chapter)
我假设到目前为止这段代码没有什么问题,所以在View Controller的
.bind(to: tableView.rx.items...
中,我有:viewModel.showChapter.bind(to: self.viewModel.chapterAction).disposed(by: viewModel.disposeBag)
因为我想把它绑定到查看控制器的
viewModel
和稍后的subscribe
协调器中。一切正常,但对某些细胞来说,我有重复的抽头,为什么?我试过放
distinctUntil
,shareReply
,但似乎对我的问题没有任何帮助,而且这不是一个确定性的问题。我怀疑有一些重复使用,但我不知道从哪里开始寻找这个问题。。。 最佳答案
您需要重新初始化disposeBag
中的prepareForReuse()
方法:
override func prepareForReuse() {
super.prepareForReuse()
disposeBag = DisposeBag()
}
然后,释放所有以前的订阅。
关于ios - RxSwift世界中带有UIButton的UITableViewCell,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46908598/