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) }

Другие вопросы по тегам