CocoaAction with RxSwift and UIAlertController



我试图实现一个文本字段和按钮的当前行为: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)
}

什么避免了可观察对象的完成?

相关内容

  • 没有找到相关文章

最新更新