ReactiveCocoa 4 - нужна помощь для подтверждения ввода при нажатии кнопки
Я новичок в ReactiveCocoa, и я пытаюсь выяснить синтаксис для проверки ввода формы при нажатии кнопки. Существует множество примеров кода для validTextSignal, но большинство из них либо подключены к Action-enableIf, либо обрабатывают привязки пользовательского интерфейса напрямую.
Идея проста, у меня есть экран входа, с 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)
}
}
Кроме того, есть ли в любом случае мы можем захватить событие Interrupted из Action-enableIf false?
Любое предложение о лучшем подходе будет очень оценено.
ура
1 ответ
Действие использовать с кнопкой для отключения при выполнении запроса (например, запрос входа в систему). Так что в этом случае нужна отключенная кнопка, если не допустимый ввод.
Или связать текст ошибки в поле ввода текста, если он недействителен.
Но если вы хотите просто показать предупреждение с текстовой ошибкой о неверных допустимых полях, вы можете попробовать этот код:
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)
}