是否可以同时绑定两个观察者?
is it possible to bind two observer at once?
喜欢:
btn.rx.tap
.bind(to: ViewA.rx.isHidden && ViewB.rx.isHidden)
.disposed(by: disposeBag)
所以一旦我点击 btn,ViewA 和 ViewB 就同时隐藏了!
可能吗?
isHidden requires Bool
, so first, you need to convert your tap 到 Bool
。回答您的问题 - 以下是您可以执行的操作:
btn.rx.tap
.map { _ in true }
.bind(onNext: { value in
ViewA.isHidden = value
ViewB.isHidden = value
}).disposed(by: disposeBag)
或
let hiddenStatus = BehaviorRelay(value: false)
btn.rx.tap
.map { _ in true }
.bind(to: hiddenStatus)
.disposed(by: disposeBag)
hiddenStatus.bind(to: ViewA.rx.isHidden).disposed(by: disposeBag)
hiddenStatus.bind(to: ViewB.rx.isHidden).disposed(by: disposeBag)
并不像 SaikO 的回答那样真正需要中间 BehaviorRelay
。只需绑定两次:
btn.rx.tap
.bind(to: ViewA.rx.isHidden)
.disposed(by: disposeBag)
btn.rx.tap
.bind(to: ViewB.rx.isHidden)
.disposed(by: disposeBag)
使用 RxSwift 5,您几乎可以按照您认为应该的方式进行操作:
button.rx.tap
.map { true }
.bind(to: viewA.rx.isHidden, viewB.rx.isHidden)
.disposed(by: bag)
喜欢:
btn.rx.tap
.bind(to: ViewA.rx.isHidden && ViewB.rx.isHidden)
.disposed(by: disposeBag)
所以一旦我点击 btn,ViewA 和 ViewB 就同时隐藏了! 可能吗?
isHidden requires Bool
, so first, you need to convert your tap 到 Bool
。回答您的问题 - 以下是您可以执行的操作:
btn.rx.tap
.map { _ in true }
.bind(onNext: { value in
ViewA.isHidden = value
ViewB.isHidden = value
}).disposed(by: disposeBag)
或
let hiddenStatus = BehaviorRelay(value: false)
btn.rx.tap
.map { _ in true }
.bind(to: hiddenStatus)
.disposed(by: disposeBag)
hiddenStatus.bind(to: ViewA.rx.isHidden).disposed(by: disposeBag)
hiddenStatus.bind(to: ViewB.rx.isHidden).disposed(by: disposeBag)
并不像 SaikO 的回答那样真正需要中间 BehaviorRelay
。只需绑定两次:
btn.rx.tap
.bind(to: ViewA.rx.isHidden)
.disposed(by: disposeBag)
btn.rx.tap
.bind(to: ViewB.rx.isHidden)
.disposed(by: disposeBag)
使用 RxSwift 5,您几乎可以按照您认为应该的方式进行操作:
button.rx.tap
.map { true }
.bind(to: viewA.rx.isHidden, viewB.rx.isHidden)
.disposed(by: bag)