2009-06-25 7 views
0

J'ai un fichier XIB au catalogue avec un UITextView, que je suis l'association avec un UITextView * sortie dans mon contrôleur:NSException jeté le chargement d'un fichier XIB avec un UITextView

@interface MyController : UIViewController <UITextViewDelegate> { 
    IBOutlet UITextView *textView; 
} 

@property (nonatomic, retain) IBOutlet UITextView *textView; 

J'ai Aded le prototype en désespoir de cause , Je n'ai implémenté aucune des méthodes du délégué.

Mon affichage est chargé à partir d'une barre d'onglets définie dans mon fichier XIB principal. Lorsque je tape sur le bouton de la barre d'onglets, une exception est lancée immédiatement (avant l'appel des méthodes du contrôleur). Le haut de la pile d'appel ressemble à ceci (du débogueur):

#0 0x93829bc6 in -[NSException raise] 
#1 0x9157f8f8 in _NSSetUsingKeyValueSetter 
#2 0x9157f35e in -[NSObject(NSKeyValueCoding) setValue:forKey:] 
#3 0x91603f81 in -[NSObject(NSKeyValueCoding) setValue:forKeyPath:] 
#4 0x30c1fadb in -[UIRuntimeOutletConnection connect] 
#5 0x9381ebe5 in -[NSArray makeObjectsPerformSelector:] 
#6 0x30c1e629 in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] 
#7 0x30c2068c in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] 
#8 0x30ac6f26 in -[UIViewController _loadViewFromNibNamed:bundle:] 

Il semble qu'il ya un problème de réglage de la prise de vue du texte. Je suis sûr qu'il est lié à UITextView parce que si je commente le code lié à la vue de texte et supprime la vue de texte du XIB, la vue se charge bien. Il n'y a pas de message d'erreur disponible sur la console.

Existe-t-il des considérations spéciales avec les éléments UITextView lorsqu'ils sont créés dans IB? Je l'ai connecté à l'IBOutlet dans mon code et le délégué est défini sur le 'propriétaire du fichier' (je l'ai également essayé sans délégué).

Répondre

1

Dans votre vue d'onglets, avez-vous défini la classe propriétaire sur MyController pour l'onglet sur lequel vous avez défini votre XIB? Si vous ne le faites pas, vous obtiendrez ce type d'erreur de configuration du sélecteur. J'ai tiré mes cheveux un peu plus haut que celui-ci.

+1

Droit sur l'argent! Merci. Voilà une autre soirée radiée grâce à IB. – edoloughlin

0

Allez dans Interface Builder et sélectionnez votre instance de MyController. Cliquez sur le deuxième onglet dans le panneau d'informations pour afficher toutes les connexions attachées à l'objet. Il devrait montrer la prise "tableView" existante et quelques autres. S'il est grisé, cela signifie que la définition de la connexion d'Interface Builder est incorrecte et que la prise n'est pas valide. Si tel est le cas (comme je pense que ce sera le cas?) Il suffit de briser cette connexion en cliquant sur le X et le créer à nouveau. Cela m'est arrivé plusieurs fois lorsque j'ai mis à jour les noms des points de vente et des actions dans XCode.

Je vais également essayer de laisser le délégué non configuré pour m'assurer que ce n'est pas le problème. Je ne pense pas que cela devrait être important.

Bonne chance!

Questions connexes