我有一个 View 必须能够定期重新绑定(bind)到一个新的 View 模型:这意味着删除旧的绑定(bind)以及连接新的绑定(bind)。我有一个有效的解决方案,但它不是线程安全的,我想知道是否有更惯用的方法来做同样的事情:
var disposeBag = CompositeDisposable()
func bind(viewModel: TopicProgressViewModel) {
disposeBag.dispose()
disposeBag = CompositeDisposable()
disposeBag += self.reactive.isHidden <~ viewModel.isHidden
disposeBag += height <~ viewModel.height
disposeBag += label.reactive.text <~ viewModel.label
disposeBag += progress.reactive.progress <~ viewModel.progressFraction
}
最佳答案
您应该使用 SerialDisposable
。
var dispose = SerialDisposable()
func bind(viewModel: TopicProgressViewModel) {
var disposeBag = CompositeDisposable()
// serialDisposable will automatic dispose previous inner disposable
dispose.inner = disposeBag
disposeBag += self.reactive.isHidden <~ viewModel.isHidden
disposeBag += height <~ viewModel.height
disposeBag += label.reactive.text <~ viewModel.label
disposeBag += progress.reactive.progress <~ viewModel.progressFraction
}
关于swift - ReactiveSwift : how to rebind (remove old bindings, 添加新的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44288298/