Observable<Bool> If else 在 RxSwift

Posted

技术标签:

【中文标题】Observable<Bool> If else 在 RxSwift【英文标题】:Observable<Bool> If else in RxSwift 【发布时间】:2018-09-04 08:33:42 【问题描述】:

我将 Observable 设为 Bool 类型,如下所示

let allValid: Observable<Bool>

//All valid is combination of two more Observable<Bool>
allValid = Observable.combineLatest(checkBoxValid, reasonValid)  $0 && $1 

现在我想检查何时按下完成按钮,根据 AllValid 的值调用相应的方法。

public func doneButtonPressed() 
//Here I have two methods, and to be called, when AllValid is true and false

//self.method1()
//self.method2()

现在如何制作。我不能直接绑定,因为它会触发,我想在按下 Done 时触发。

【问题讨论】:

doneButtonPressed 应该由按钮事件触发。 【参考方案1】:

执行此操作的 Rx 方法是将其放入您的 viewDidLoad

let isValid = doneButton.rx.tap.withLatestFrom(allValid)

isValid
    .filter  $0 
    .subscribe(onNext:  _ in 
        // The button was tapped while the last value from allValid was true.
    
    .disposed(by: bag)

isValid
    .filter  !$0 
    .subscribe(onNext:  _ in 
        // The button was tapped while the last value from allValid was false.
    
    .disposed(by: bag)

【讨论】:

以上是关于Observable<Bool> If else 在 RxSwift的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 绑定布尔 if 语句(无法将类型 'Binding<Bool>' 的值转换为预期的条件类型 'Bool')

使用 if/else 语句返回 observable 不适用于 RxSwift flatMap

我如何制作一个可重置的RxSwift计时器?

RxSwift:重复(完成)流

从 observable 返回一个 blob

kotlin 中的 Observable.combineLatest 类型推断