2009-11-23 3 views
7

Comment connecter la sortie "delegate" d'un UITextView à une classe qui implémente le protocole UITextViewDelegate?Comment connecter la sortie "delegate" d'un UITextView à une classe qui implémente le protocole UITextViewDelegate?

Je ne peux pas sembler trouver un exemple in the docs

La chose étrange est la sortie « délégué » du UITextView a que glisser-déposer thingy d'interface, comme vous pouvez le câbler jusqu'à un autre widget mais Bien sûr, je ne veux pas le câbler à un widget, je veux le câbler à un existant classe.

Répondre

3

Si vous voulez dire « comment puis-je faire un objet qui est créé avec le code du délégué à mon avis texte », juste définir la propriété délégué (ce que glisser dans Interface Builder fera pour vous):

textView.delegate = yourDelegateObject; 
+0

Ok, mais, vous avez une idée pourquoi les _looks de sortie like_ il peut être glissés sur un widget? Vous ne pouvez pas faire glisser la sortie sur un morceau de code, alors pourquoi est-il conçu de cette façon? – bobobobo

+1

Vous pouvez instancier un objet dans le générateur d'interface, par exemple votre objet qui sera le délégué, et le faire glisser. Si vous voulez faire cela, créez simplement un objet dans la palette du générateur d'interface (sous Objects & Controllers), puis définissez la classe sur votre classe dans l'inspecteur d'identité. Quand la plume est chargée, votre classe sera instanciée, alors assurez-vous de ne pas le faire dans votre code. – Rhult

+0

Doux. De cette façon fonctionne. – bobobobo

6

pour câbler un délégué dans Interface Builder:

(1) Faites glisser un contrôleur approprié dans la fenêtre principale et grué de définir la classe du contrôleur à la classe de votre délégué. Par exemple, si vous avez une sous-classe NSObject appelée "MyDelegateClass", faites glisser un contrôleur Object et définissez sa classe sur "MyDelegateClass".

(2) Dans l'inspecteur de connexions pour UITextView, cliquez sur le delegate et connectez-le au contrôleur créé à l'étape (1).

C'est tout.

+0

Semble assez raisonnable, mais maintenant, quand je lance l'application, l'application se bloque sans avertissement à chaque fois que je touche le textView .. – bobobobo

+0

Ouais. Et l'application fonctionne quand j'utilise la méthode 'textView.delegate = yourDelegateObject;' dont parle Rhult. – bobobobo

+1

La méthode de Rhult est la méthode programmatique. C'est celui que j'utilise la plupart du temps parce qu'il est difficile de trouver des erreurs dans IB. Je pensais que vous vouliez savoir comment le configurer dans le constructeur d'interface et c'est la bonne méthode pour le faire. Un plantage suggère que le délégué n'est toujours pas affecté correctement. N'oubliez pas que vous devez remplir deux protocoles pour les tables, un délégué et une source de données. La même classe/instance peut implémenter les deux mais vous devez câbler les tables 'delegate' et' datasource' dans IB. – TechZen

6

Il s'agit d'une question assez ancienne, mais j'ai aussi eu des problèmes avec cela et j'ai pensé partager une solution Xcode 5 mise à jour.

Vous devriez être capable de faire glisser le délégué vers le cercle jaune avec le carré blanc qui se trouve dans cette barre noire sous le contrôleur de vue de votre storyboard. Ce n'est pas du tout évident, donc je l'ai fourni une capture d'écran

enter image description here

+0

exactement ce que je cherchais. merci beaucoup! –

Questions connexes