romanilchyshyn
romanilchyshyn

Reputation: 392

How to bind multiple observers to one ControlProperty

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?

Upvotes: 5

Views: 5958

Answers (1)

christopher.online
christopher.online

Reputation: 2774

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()

Here is also a link to a nice cheat sheet for RxSwift https://www.cheatography.com/donghua-li/cheat-sheets/rxswift-operators/

Upvotes: 7

Related Questions