如何将多个观察者绑定到一个 ControlProperty [英] How to bind multiple observers to one ControlProperty

查看:27
本文介绍了如何将多个观察者绑定到一个 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆