【发布时间】:2019-03-02 07:35:13
【问题描述】:
我正在尝试合并所有文本字段的输入并检查它是否有输入,但在观察时合并最新只订阅了一次。
是否有其他方法可以使用 rxswift 检查文本字段是否为空?那些 OTP 文本字段
let otp1Value: Observable<Bool> = self.otp1.rx.controlEvent(UIControlEvents.editingDidEnd)
.withLatestFrom(self.otp1.rx.text)
.map{ !$0!.isEmpty }
.share()
let otp2Value: Observable<Bool> = self.otp1.rx.controlEvent(UIControlEvents.editingDidEnd)
.withLatestFrom(self.otp2.rx.text)
.map{ !$0!.isEmpty }
.share()
let otp3Value: Observable<Bool> = self.otp1.rx.controlEvent(UIControlEvents.editingDidEnd)
.withLatestFrom(self.otp3.rx.text)
.map{ !$0!.isEmpty }
.share()
let otp4Value: Observable<Bool> = self.otp1.rx.controlEvent(UIControlEvents.editingDidEnd)
.withLatestFrom(self.otp4.rx.text)
.map{ !$0!.isEmpty }
.share()
let otp5Value: Observable<Bool> = self.otp1.rx.controlEvent(UIControlEvents.editingDidEnd)
.withLatestFrom(self.otp5.rx.text)
.map{ !$0!.isEmpty }
.share()
let otp6Value: Observable<Bool> = self.otp1.rx.controlEvent(UIControlEvents.editingDidEnd)
.withLatestFrom(self.otp6.rx.text)
.map{ !$0!.isEmpty }
.share()
Observable.combineLatest(
otp1Value.asObservable(),
otp2Value.asObservable(),
otp3Value.asObservable(),
otp4Value.asObservable(),
otp5Value.asObservable(),
otp6Value.asObservable())
.asObservable().subscribe(onNext: { [weak self] (arg: (Bool, Bool, Bool, Bool, Bool, Bool)) -> Void in
guard let self = self else { return }
print("args \(arg)")
switch arg {
case (true, true, true, true, true, true):
self.step2CellViewModel.otpIsValid.onNext(true)
print("args \(arg)")
default:
self.step2CellViewModel.otpIsValid.onNext(false)
print("args false")
}
})
.disposed(by: self.disposeBag)
【问题讨论】:
-
您只是要求进行代码审查还是遇到了问题?