2015-12-03 6 views
5

私は文字に基づいて、ボタンを有効にする必要が最終的に私はこれを行うことにより、acomplishが、私はいないよRxSwiftRxSwift:テキストフィールドに基づいて有効/無効ボタンは空ではありません

@IBOutlet weak var userTextField: UITextField! 
@IBOutlet weak var passwordTextField: UITextField! 
@IBOutlet weak var buttonToEnableDisable: UIButton! 

var enabledObservable = combineLatest(userTextField.rx_text, passwordTextField.rx_text) 
{ (user,password) in 
    self.loginButton.enabled = a.characters.count > 0 && b.characters.count > 0 
} 

を使用して、2つのテキストフィールドを頼りに私はあなたがcorrectl理解している場合

_ = combineLatest(emailTextField.rx_text, passwordTextField.rx_text) { (a: String, b:String) in 
     return (a.characters.count > 0 && b.characters.count > 0) 
     }.subscribeNext { enabled in 
      self.loginButton.alpha = enabled ? 1 : 0.5 
      self.loginButton.enabled = enabled 
     } 
     .addDisposableTo(disposeBag) 

答えて

12

_ = combineLatest(emailTextField.rx_text, passwordTextField.rx_text) { (a: String, b:String) in 
     self.loginButton.enabled = (a.characters.count > 0 && b.characters.count > 0) 
    }.subscribeNext { (result) -> Void in 
    } 

編集最終バージョン:その最良の方法であれば確認してくださいyは、おそらく、私はあなたがそこには、一般的な問題への回答をたくさん見つけることができますRxExamples

を見てお勧め詳細については、この

let loginValidation = loginTextFiled 
    .rx_text 
    .map({!$0.isEmpty}) 
    .shareReplay(1) 

    let userNameValidation = passwordTextField 
    .rx_text 
    .map({!$0.isEmpty}) 
    .shareReplay(1) 

    let enableButton = combineLatest(loginValidation, userNameValidation) { (login, name) in 
    return login && name 
    } 

    enableButton 
    .bindTo(loginButton.rx_enabled) 
    .addDisposableTo(disposeBag) 

ような何かをしたいです。 楽しいです=)

+0

ありがとう、これは私をつかまえました! –

関連する問題