首先很抱歉标题混乱,但我实在想不出更好的东西(如果你想,请编辑)。
我有一个使用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协调器中。
一切正常,但对某些细胞来说,我有重复的抽头,为什么?我试过放distinctUntilshareReply,但似乎对我的问题没有任何帮助,而且这不是一个确定性的问题。我怀疑有一些重复使用,但我不知道从哪里开始寻找这个问题。。。

最佳答案

您需要重新初始化disposeBag中的prepareForReuse()方法:

override func prepareForReuse() {
    super.prepareForReuse()
    disposeBag = DisposeBag()
}

然后,释放所有以前的订阅。

关于ios - RxSwift世界中带有UIButton的UITableViewCell,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46908598/

10-13 05:42