赞:
btn.rx.tap
.bind(to: ViewA.rx.isHidden && ViewB.rx.isHidden)
.disposed(by: disposeBag)
因此,一旦我点击btn,ViewA和ViewB都立即隐藏! 有可能吗?
答案 0 :(得分:1)
isHidden需要Bool
,因此,首先,您需要将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)
答案 1 :(得分:1)
与SaikOs答案一样,实际上不需要中间BehaviorRelay
。只需绑定两次:
btn.rx.tap
.bind(to: ViewA.rx.isHidden)
.disposed(by: disposeBag)
btn.rx.tap
.bind(to: ViewB.rx.isHidden)
.disposed(by: disposeBag)
答案 2 :(得分:1)
使用RxSwift 5,您几乎可以按照您认为的方式进行操作:
button.rx.tap
.map { true }
.bind(to: viewA.rx.isHidden, viewB.rx.isHidden)
.disposed(by: bag)