0

我是 ReactiveCocoa 的新手,我正在尝试找出在点击按钮时验证表单输入的语法。有相当多的validTextSignal 示例代码,但其中大多数要么挂钩到Action-enableIf,要么直接处理UI 绑定。

这个想法很简单,我有一个登录屏幕,有email输入password。我想要的是在Login点击时处理验证以显示 UIAlertView(例如“请输入您的电子邮件”)。

这是我一段时间后发现的,代码有效,但我不确定这是否应该是这样做的方法。

self.s_formErrorMessage <~ combineLatest(s_email.producer, s_password.producer)
        .map({ (email, password) in
            if adminNumber.isEmpty {
                return "Please input admin number"
            } else if password.isEmpty {
                return "Please input password"
            }
            return ""
        })

这就是我的使用方法,只需简单地使用按钮中的值TouchUpInside

btn_login.rac_signalForControlEvents(.TouchUpInside).subscribeNextAs { (button: UIButton) in
        if !self.viewModel.s_formErrorMessage.value.isEmpty {
            self.showAlert("", message: self.viewModel.s_formErrorMessage.value)
        }
    }

另外,无论如何我们可以从 Action-enableIf false 中捕获 Interrupted 事件吗?

任何关于更好方法的建议都会非常感激。

干杯

4

1 回答 1

0

在请求(例如登录请求)时禁用按钮的操作。因此,在这种情况下,如果输入无效,则需要禁用按钮。

如果无效,则在提示文本字段中绑定错误文本。

但是,如果您只想显示有关失败的有效字段的文本错误警报,请尝试以下代码:

btn_login.rac_signalForControlEvents(.TouchUpInside) .toSignalProducer().map { [unowned self] _ in return self.viewModel.s_formErrorMessage.value }.filter { !$0.isEmpty } .startWithNext { [unowned self] text in self.showAlert("", message: text) }

于 2016-04-07T08:05:47.257 回答