2017-08-22 8 views
0

私はリアクティブプログラミングとボンドフレームワークを初めて使用しています。私はこのプログラミングテクニックの基本的な理解に間違っていることをしているかもしれないことを知っています。これは状況です:テキストフィールドのテキストをバインドしてボタンが機能しないようにする

私はUITextViewと「承認」UIButtonを持っています。 textViewのテキストがnilでない場合にのみ、承認ボタンを有効にします。私はViewControllerviewDidLoadメソッドにこれらのコード行を追加しようとしました。

最初のアクションが機能します(すべての入力変更でテキストの印刷が正常に行われています)。 もう1つは機能しません。テキストがnilでないときと、そうでないときの両方でボタンが有効になります。

助けてください。

答えて

0

ようにしてみてください、私はそれが迅速3になりますかどうかはわかりません

RAC(self.approveButtonOutlet, enabled) = [self.textView.rac_textSignal map:^id(NSString *text) { 
     return @(text.length > 0); 
    }]; 

ように試みることができる私は、問題は私が私のTextViewにプレースホルダを持っていたことがわかりましたこれは、テキストが本当にゼロにならないようにしました。それでは、最終的に私がやったことは、これは次のとおりです。答えを

textView.reactive.text.map { 
     if $0 == placeholder { 
      return false 
     } else if $0 != nil { 
      return $0!.characters.count > 0 
     } else{ 
      return false 
     } 
     }.bind(to: approveButtonOutlet.reactive.isEnabled) 
1

あなただけ

RAC(self.approveButtonOutlet, enabled) = self.textView.rac_textSignal.map({(text: String) -> void in 
    return (text.length > 0) 
}) 
+0

おかげで、私は何であるかRAC理解していない、と私は実際にあるため、別の1つを得るその後、私の解決策が間違っているかを理解することがより重要です私はフレームワークを勉強しようとしています。私は努力のためにあなたに親指を与えますが、これを解決することはボタン操作のif条件を使うだけで簡単でした – Eyzuky

関連する問題