Mah*_*dra 0 uibutton ios swift rx-swift rx-cocoa
我是 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....
Run Code Online (Sandbox Code Playgroud)
当我按下一个按钮时,它会一次性检查所有验证并显示警报...
但我想做的是,如果一次验证失败,那么在上一次验证成功之前它不应该再进一步......
我不知道如何实现这一目标。任何帮助将不胜感激。
小智 5
你可以做这样的事情。
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2798 次 |
| 最近记录: |