我试图实现一个文本字段和按钮的当前行为:1 -文本字段应该验证不是实时的,但只有在点击按钮后,它必须显示验证错误的错误标签2 -如果文本域是有效的,我必须显示一个uialertcontroller取消或继续操作
我用下面的代码特别尝试了第二部分,但它只在第一次工作,如果我点击取消,例如,我点击其他时间按钮,它看起来像禁用....
let action = CocoaAction {
return Observable.create {
[weak self] observer -> Disposable in
let alertController = self.getAlertController()
let ok = UIAlertAction.Action(NSLocalizedString("OK_BUTTON", comment: "OK_BUTTON"), style: .Default)
ok.rx_action = CocoaAction { _ in
return self!.viewModel!.modify(self?.addressTextFiled.rx_text)
.doOnNext({ data in
if let data = data
{
self!.showMessage(data.message)
}
})
.map { _ in Void() }
}
let cancelAction = UIAlertAction(title: NSLocalizedString("CANCEL_BUTTON", comment: "CANCEL_BUTTON"), style: .Cancel) { (_) in }
alertController.addAction(ok)
alertController.addAction(cancelAction)
self!.presentViewController(alertController, animated: true, completion: nil)
return NopDisposable.instance
}
}
confirmButton.rx_action = action
对于第一点,你有什么建议吗?谢谢你的帮助!!
在viewModel中,返回的可观察对象是:
func modify() -> Observable<StatusResponse?>
{
return input!.continueClick
.withLatestFrom(requestData!)
.flatMap{ [unowned self] (code, mail) -> Observable<StatusResponse?> in
return self.provider.request(APIProvider.ModifyRequest(code, "A", mail))
.mapObjectOptional(ModifyStatusResponse.self)
.trackActivity(self.activityIndicator)
}
.retry()
.shareReplay(1)
}
什么避免了可观察对象的完成?