swift - 同时观察两个数据源
问题描述
我正在学习 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 中选择一些不同的正则表达式时,就会出现问题 - 按钮没有更新,因为没有对文本进行任何更改!
所以我猜我应该以某种方式压缩或合并这两个来源(可观察的?),以便该按钮可以立即观察它们中的每一个的任何变化。
我应该如何解决这个问题?
解决方案
你搜索过 combineLatest 函数吗?
我认为它会解决你的问题
你可以通过这个博客来理解它:http: //adamborek.com/combinelatest-withlatestfrom-zip/
推荐阅读
- r - 在 R 中反向计算 t 统计量
- excel - 通过 SUMPRODUCT 和 SUMIFS 粘贴负值的 SUM
- javascript - 聊天 php 脚本到 codeigniter 4
- c++ - 31==错误:AddressSanitizer:负大小参数:(大小=-4))
- firebase - 为什么 FCM 的 onLaunch 方法被多次调用
- airflow - 有没有办法将气流中的两个任务联系在一起 w/r/t 重试?
- bash - 如何在 sed 命令中包含 1 个或多个空格
- spring-boot - 如何找出是否在 Maven 应用程序中使用了依赖项中的任何类?
- java - 无法使用 jsoup 获取准确的图像和文本
- vb.net - 以适当间距连接可变长度字符串