【发布时间】:2019-05-23 14:58:50
【问题描述】:
我正在学习 RxSwift 和 RxCocoa。 我遇到了这个问题:
我有 UITextField 和 UIPickerView 和 UIButton。 一旦 UITextField 有效,应该启用 UIButton。从 UIPickerView 中选择的每个项目都有不同的验证正则表达式。
这是我目前的代码:
textField.rx.text
.map({ (text) -> Bool in
return self.validate(text!, self.regex)})
.subscribe(onNext: { (valid) in
self.button.alpha = valid ? 1 : 0.5
self.button.isEnabled = valid
})
.disposed(by: disposeBag)
pickerView.rx.itemSelected.subscribe(onNext: { row, value in
self.regex = getRegex(row)
}).disposed(by: disposeBag)
所以我首先从 pickerView 中选择正则表达式,然后我正在观察文本变化。当我想先输入文本然后从 pickerView 中选择一些不同的正则表达式时,就会出现问题 - 按钮没有更新,因为没有对文本进行任何更改!
所以我猜我应该以某种方式压缩或合并这两个源(observables?),以便该按钮可以同时观察它们中的每一个的任何变化。
我应该如何解决这个问题?
【问题讨论】: