如何将多个观察者绑定到一个 ControlProperty [英] How to bind multiple observers to one ControlProperty
本文介绍了如何将多个观察者绑定到一个 ControlProperty的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要将 slider.rx.value
绑定到具有不同映射的 2 个观察者.
I need to bind slider.rx.value
to 2 observers with different mappings.
slider.rx.value.map { [unowned self] in self.formatter.string(from: NSNumber(value: $0)) ?? "" }
.bindTo(textFieldAlpha.rx.text)
.addDisposableTo(disposeBag)
slider.rx.value.map { Enhance.Global(alpha: $0) }
.bindTo(enhance)
.addDisposableTo(disposeBag)
但我似乎只有最后一次绑定有效.如何实现这一目标?
But i seems that only last binding works. How to achieve this?
推荐答案
这能达到你想要的效果吗?
Does this accomplish what you want?
let observable = slider.rx.value.shareReplay(1)
observable.map { [unowned self] in self.formatter.string(from: NSNumber(value: $0)) ?? "" }
.bindTo(textFieldAlpha.rx.text)
.disposed(by: disposeBag)
observable.map { Enhance.Global(alpha: $0) }
.bindTo(enhance)
.disposed(by: disposeBag)
如果不需要缓冲区的替代方法
Alternative if you do not need the buffer
let observable = slider.rx.value.share()
这里还有一个链接到 RxSwift 的一个不错的备忘单 https://www.cheatography.com/donghua-li/cheat-sheets/rxswift-operators/
Here is also a link to a nice cheat sheet for RxSwift https://www.cheatography.com/donghua-li/cheat-sheets/rxswift-operators/
这篇关于如何将多个观察者绑定到一个 ControlProperty的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文