swift - 同时观察两个数据源

标签 swift rx-swift rx-cocoa

我正在学习 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/

关于swift - 同时观察两个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56278023/

相关文章:

json - 使用回调从数据库调用中获取 JSON 值

ios - 在得到答案之前我不能再次调用我的方法吗?

swift - 根据 TableView 中的项目数使动态 UI 按钮出现和消失

ios - 加载 View 后,静态 TableView 中的单元格不会立即调整大小

ios - 更改数组中的值

ios - 创建可观察数组后在 RxSwift 中使用 zip 运算符

ios - 如何在ios中实现刷新 token

swift - 为自定义 UIControl 创建 ControlProperty

cocoa - 为什么我的扩展方法会导致类型错误?

使用 RxSwift 登录 Facebook