开始学习 RxSwift(领域类(class))并提出一些问题。
在我的 Controller 中有一个 TextField 和一个 Button,当我的 TextField.count > 0 时,我需要订阅 Button.isEnable
在类(class)中这个问题解决了下一个代码:
在 Controller 中设置值:
userNameText.rx.text.orEmpty.bind(to: viewModel.userName).disposed(by: disposeBag)
passwordText.rx.text.orEmpty.bind(to: viewModel.passwordValue).disposed(by: disposeBag)
viewModel.isValid.map{$0}.bind(to: button.rx.isEnabled).disposed(by: disposeBag)
在模型中:
let userName = Variable<String>("")
let passwordValue = Variable<String>("")
let isValid: Observable<Bool>
init() {
isValid = Observable.combineLatest(self.userName.asObservable(), self.passwordValue.asObservable()) {(name, password) in
return name.count > 0 && password.count > 0
}
}
在类(class)中使用 Observable.combineLatest 创建具有 2 个值的可观察对象,我们对此进行观察。(使用 2 个值)
如何在我们使用一个值的情况下创建 Observable?
P.S 不是这样工作的(最少 2 分钟)
isValid = Observable.combineLatest(self.passwordValue.asObservable()) {(name) in
return name.count > 0 && password.count > 0
}
最佳答案
只是做:
self.isValid = self.passwordValue.asObservable().map{ password in
password.count > 0
}
关于ios - RxSwift 订阅 <Bool> 变化取决于一个变量 (MVVM),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49587115/