Je travaille sur une application iPhone et je reçois des références (null) aux champs IBOutlet dans mon contrôleur. J'ai une sous-classe UIViewController qui est définie en tant que propriétaire du fichier dans mon XIB. J'ai un ensemble d'éléments d'interface utilisateur qui sont câblés dans le contrôleur. Après le chargement de NIB et la tentative de définir des propriétés sur ces éléments d'interface utilisateur, je trouve qu'ils sont (null). Pour clarifier, un code:Les instances IBOutlet sont (NULL) après le chargement de NIB
ExpandSearchPageController.h:
@interface ExpandSearchPageController : UIViewController
{
IBOutlet UITextView * completeMessageView;
}
-(void)checkTextField;
@property (nonatomic, retain) IBOutlet UITextView * completeMessageView;
ExpandSearchPageController.m:
@implementation ExpandSearchPageController
@synthesize completeMessageView;
-(void)checkTextField
{
NSLog(@"text field: %@",completeMessageView);
}
ExpandSearchPageController est défini comme propriétaire pour ExpandSearchPage.xib du fichier. UITextView de ExpandSearchPage.xib est câblé à completeMessageView.
Quand j'appelle
ExpandSearchPageController * searchExpanderPage = [[ExpandSearchPageController alloc] initWithNibName:@"ExpandSearchPage" bundle:[NSBundle mainBundle]];
[searchExpanderPage checkTextField];
le résultat est
"text field: (null)"
Un autre point d'intérêt qui m'a pris. Lorsque vous présentez un contrôleur de vue de manière modale avec 'presentViewController: animated: completion:', tous les IBOutlets seront nuls jusqu'à ce que la vue apparaisse (ce que vous avez découvert). Vous aurez donc besoin d'y accéder via le bloc d'achèvement, qui est appelé quand 'viewDidAppear' est appelé sur le modal. – guptron