【发布时间】:2021-03-08 03:38:25
【问题描述】:
有一个使用 RXSwift 进行验证的文本字段。我想禁用基于开关操作的验证。
// Start Time
startTimeValid = startTimeTextfield.rx.text.orEmpty.map{
$0.count > 0
}
// End time
endTimeValid = endTimeTextfield.rx.text.orEmpty.map{
$0.count > 0
}
everythingValid = Observable.combineLatest(startTimeValid,endTimeValid){ $0 && $1 }
endTimeValid.bind(to: endTimeErrorLabel.rx.isHidden).disposed(by: bag)
startTimeValid.bind(to: startTimeErrorLabel.rx.isHidden).disposed(by: bag)
everythingValid.bind(to: createButton.rx.isEnabled).disposed(by: bag)
createButton.rx.tap.subscribe(onNext:{
print("success")
}).disposed(by: bag)
所以在上面的代码中,结束时间和开始时间文本字段都正在验证中。基于布尔值,我需要禁用 EndTime 文本字段的验证。
我试过的代码:
@objc func endDateRequired(_ aSwitch : UISwitch){
if aSwitch.isOn{
everythingValid = Observable.combineLatest(eventTitleValid, startDateValid, endDateValid){ $0 && $1 && $2
}
everythingValid.bind(to: createButton.rx.isEnabled).disposed(by: bag)
}else{
everythingValid = Observable.combineLatest(eventTitleValid, startDateValid, endDateValid, startTimeValid,endTimeValid){ $0 && $1 && $2 && $3 && $4
}
everythingValid.bind(to: createButton.rx.isEnabled).disposed(by: bag)
}
}
我正在尝试将其简化为反应式。
【问题讨论】:
标签: ios uitextfield rx-swift