我是 RxSwift 和 RxCocoa 的新手,正在学习。
我想在单击按钮时验证所有文本字段,并根据验证向用户显示警告消息。
验证成功后,我需要在表中插入记录。
引用以下代码...
var result = txtFname.rx.text
result.asObservable().subscribe(onNext: { text in
if text!.isEmpty {
self.showAlert(msg: "Plese enter first name.")
self.txtFname.becomeFirstResponder()
}
}).disposed(by: disposeBag)
result = txtLname.rx.text
result.asObservable().subscribe(onNext: { text in
if text!.isEmpty {
self.showAlert(msg: "Please enter last name.")
self.txtLname.becomeFirstResponder()
}
}).disposed(by: disposeBag)
result = txtEmail.rx.text
result.asObservable().subscribe(onNext: { text in
if text!.isEmpty {
self.showAlert(msg: "Please enter email id.")
self.txtLname.becomeFirstResponder()
}
}).disposed(by: disposeBag)
//need to check here if all fields are valid or not
//if all fields are valid then insert record....
当我按下一个按钮时,它一次检查所有验证并显示警报...
但我想做的是,如果一个验证失败,那么在上一个验证成功之前,它不应该再进一步......
我不知道如何做到这一点。任何帮助将不胜感激。
最佳答案
你可以这样做。
self.button.rx.tap.asObservable()
.filter({ (_) -> Bool in
guard !(self.txtFname.text ?? "").isEmpty else {
self.showAlert(msg: "Please enter first name.")
self.txtFname.becomeFirstResponder()
return false
}
guard !(self.txtLname.text ?? "").isEmpty else {
self.showAlert(msg: "Please enter last name.")
self.txtLname.becomeFirstResponder()
return false
}
guard !(self.txtEmail.text ?? "").isEmpty else {
self.showAlert(msg: "Please enter email id.")
self.txtEmail.becomeFirstResponder()
return false
}
return true
})
.subscribe { _ in
// do something when all the fields are valid
self.showAlert(msg: "All fields are valid")
}
.disposed(by: disposeBag)
关于ios - 使用 RxSwift 和 RXCocoa 在按钮单击时验证所有文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49553049/