2017-08-22 1 views
0

Je suis nouveau à la programmation réactive, et le cadre Bond spécifiquement. Je sais que je peux faire des choses qui ne vont pas dans ma compréhension de base de cette technique de programmation. C'est la situation:Liaison texte de texte pour activer le bouton ne fonctionne pas

J'ai un UITextView et un "approuve" UIButton. Je souhaite que le bouton d'approbation soit activé uniquement lorsque le texte de textView n'est pas nul. J'ai essayé d'ajouter ces lignes de code dans ma méthode viewDidLoad dans mon ViewController.

textView.reactive.text.observeNext{(text) in 
     self.message = text 
     print(text) 
    } 
    textView.reactive.text.map { $0 != nil}.bind(to: approveButtonOutlet.reactive.isEnabled) 

Les premiers travaux d'action (impression du texte se produit avec succès à chaque changement d'entrée). La seconde ne fonctionne pas, le bouton est activé à la fois lorsque le texte n'est pas nul et quand il l'est.

Toute aide appréciée.

Répondre

0

J'ai trouvé la question était que j'avais un espace réservé dans mon textView , ce qui a empêché le texte d'être vraiment nul. Alors, que finalement je l'ai fait est la suivante:

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

Vous pouvez essayer comme

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

Je ne sais pas comment il sera rapidement 3 essayer comme

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

Merci pour la réponse, je ne comprends pas ce que le RAC est, et il est plus important pour moi de comprendre réellement ce qui ne va pas avec ma solution puis obtenir un autre, depuis J'essaie d'apprendre le cadre .. Je vous donne des pouces pour l'effort, mais la résolution de ce problème était également facile en utilisant une condition si sur l'action des boutons – Eyzuky