2010-11-05 25 views
1

Je me demandais s'il était possible d'étendre les classes, par ex. UIView ou UITextView avec des catégories et l'extension est-elle récupérée par Interface Builder? Supposons que nous voulions ajouter une sortie précédente et suivante à chaque UITextView, idéalement on écrirait la catégorie pour étendre l'UITextView et que l'Interface Builder choisisse cette modification. Par conséquent, offrant des points de vente précédents et suivants sur tous les UITextViews.Extension d'Interface Builder avec des catégories?

Mais cette tentative semble échouer. Est-ce encore possible?

Répondre

2

Les sorties sont des ivars. Vous ne pouvez pas ajouter d'ivars dans une catégorie. Mais vous pouvez écrire une sous-classe de UITextView (peut-être l'appeler SequenceTextView ou quelque chose comme ça). Ajouter toutes les sorties que vous désirez comme propriétés/ivars de la sous-classe. Puis ajoutez un UITextView dans IB et définissez sa classe à SequenceTextView et vos points de vente devraient apparaître. N'oubliez pas de toujours utiliser SequenceTextView au lieu de UITextView lorsque vous avez besoin de ces prises.

Indice de bonus: pour un accès facile plus tard, faites glisser SequenceTextView depuis votre fenêtre .xib dans la section Objets personnalisés du panneau Bibliothèque d'IB. Cela vous évitera de devoir régler manuellement l'identité de la classe (et d'autres paramètres par défaut) à la main.

+0

Cette réponse était précise et directe au point! Merci beaucoup! – angerman

0

Les sorties ne sont pas des ivars, ce sont des propriétés, elles pourraient se résoudre en un ivar existant par exemple. Je pense que le soutien par catégorie serait utile mais n'est malheureusement pas supporté.