Estoy trabajando en una aplicación de iPhone y obtengo referencias (nulas) a los campos de IBOutlet en mi controlador. Tengo una subclase UIViewController que se establece como el propietario del archivo en mi XIB. Tengo un conjunto de elementos UI que están conectados al controlador. Después de cargar desde NIB e intentar establecer propiedades en esos elementos de la interfaz de usuario, descubro que son (nulos). Para aclarar, algo de código:Las instancias de IBOutlet son (nulas) después de cargar desde 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 se establece como el propietario del archivo de ExpandSearchPage.xib. La UITextView de ExpandSearchPage.xib está conectada a la vista de mensaje completa.
Cuando llamo
ExpandSearchPageController * searchExpanderPage = [[ExpandSearchPageController alloc] initWithNibName:@"ExpandSearchPage" bundle:[NSBundle mainBundle]];
[searchExpanderPage checkTextField];
el resultado es
"text field: (null)"
Otro punto de interés que me atrapó. Al presentar un controlador de vista modalmente con 'presentViewController: animated: completion:', todas las IBOutlets serán nulas hasta que aparezca la vista (lo que descubriste). Por lo tanto, tendrá que acceder a ellos a través del bloque de finalización, que se llama cuando se invoca 'viewDidAppear' en el modal. – guptron