Ich arbeite an einer iPhone App und bekomme (Null) Verweise auf IBOutlet Felder in meinem Controller. Ich habe eine UIViewController-Unterklasse, die in meiner XIB als Besitzer der Datei festgelegt ist. Ich habe eine Reihe von UI-Elementen, die in den Controller verdrahtet sind. Nach dem Laden von NIB und dem Versuch, Eigenschaften für diese UI-Elemente festzulegen, stelle ich fest, dass sie (null) sind. Um zu klären, einige Code:IBOutlet Instanzen sind (null) nach dem Laden von 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 als Datei Besitzer für ExpandSearchPage.xib gesetzt. ExpandSearchPage.xibs UITextView ist mit der completeMessageView verbunden.
Als ich
ExpandSearchPageController * searchExpanderPage = [[ExpandSearchPageController alloc] initWithNibName:@"ExpandSearchPage" bundle:[NSBundle mainBundle]];
[searchExpanderPage checkTextField];
nenne das Ergebnis ist
"text field: (null)"
Ein weiterer Punkt von Interesse, die mich gefangen. Wenn Sie einen View-Controller modal mit 'presentViewController: animated: completion:' präsentieren, sind alle IBOutlets null bis die Ansicht erscheint (was Sie entdeckt haben). Sie müssen also auf sie über den Completion-Block zugreifen, der aufgerufen wird, wenn "viewDidAppear" für das Modal aufgerufen wird. – guptron