2016-03-31 14 views
0

butonu üzerinden girişi doğrulamak için yardıma ihtiyacınız var ReactiveCocoa'ya yeniyim ve buton girişi üzerine form girişini doğrulamak için sözdizimini anlamaya çalışıyorum. ValidTextSignal için çok sayıda örnek kod vardır, ancak bunların çoğu Action-enableIf'e bağlanır veya doğrudan UI bağlamaları ile işlenir.ReactiveCocoa 4 -

fikri ben email ve password girişli, bir giriş ekranı var basittir. İstediğim şey, bir UIAlertView göstermek için Login aracılığıyla doğrulama işleminin yapılmasıdır (örn. "Lütfen e-postanızı girin").

İşte bir süre sonra anladığım şey, kod çalışıyor, ancak bunun yapmanın yolu olup olmadığından emin değilim.

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

Ve burada sadece basitçe Ayrıca

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

düğmeye TouchUpInside değeri kullanması, bunları nasıl kullandığımız, biz yanlış Eylem-enableIf gelen Kesildi olayı yakalayabilir zaten var mıdır?

daha iyi bir yaklaşım için herhangi bir öneri

çok appreaciated olacaktır.

Alkış engelli süre düğme ile

cevap

0

Eylem kullanımı (örneğin giriş istek için) isteği yok. Bu durumda geçerli bir giriş değilse bu durumda devre dışı bırakılması gerekir.

Veya geçerli değilse istemi metin alanında hata metnini bağlayıcı.

Ama sadece istediğiniz başarısız geçerli alanları hakkında metin hatasıyla uyarı göstermek eğer kedi bu kodu deneyin:

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