example custom create ios uiviewcontroller iboutlet

ios - custom - Todos mis IBOutlet son nulos en viewDidLoad



views in ios swift (3)

Compruebe si IBoulet está vinculado correctamente con xib o no. Compruebe también el propietario de los archivos de su xib.

Si se cambia el nombre de su clase o xib, intente asignar su controlador de vista con xibName apropiado

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"NibName" bundle:nil];

He creado un UIViewController que podemos llamar MyViewController1 . Cuando llamo a MyViewController1 , todos mis IBOutlet son nulos en viewDidLoad (y también en el resto del código).

Cuando creo este controlador haciendo
MyViewController1 *vc = [[MyViewController1 alloc] init] ,

si sustituyo MyViewController1 por otro, por ejemplo MyViewController2 , funciona. Así que supongo que el problema está realmente en MyViewController1 .

Lo último que querrá saber es que MyViewController1 es en realidad una subclase de MySuperViewController1 que es un UIViewController .

Gracias por tu ayuda !

EDITAR

Me di cuenta de que mi caso era tal vez más complicado. Aquí están mis archivos exactos:

// MySuperViewController1

MySuperViewController1.h MySuperViewController1.m MySuperViewController1.xib

// MyViewController1

MyViewController1.h MyViewController1.m

Así que la punta pertenece a la superclase, y no a la subclase. Puedo hacer eso ?


Probablemente deberías usar:

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MyViewController1" bundle:nil]

llamar a init no coincidirá con su archivo xib y no asignará sus diferentes IBOutlet

EDITAR:

Hay dos posibles soluciones:

Lo primero es llamar a init con super nibName:

MyViewController1 *vc = [[MyViewController1 alloc] initWithNibName:@"MySUperViewController1" bundle:nil]

El segundo es llamar al súper initWithNibName: en el método de inicio hijo:

-(id)init { if (self = [super initWithNibName:@"MySuperViewController1" bundle:nil]) { // Init } return self; }


Tuve el mismo problema después de que me rompí la cabeza, me di cuenta de que nombrar el xib igual que el nombre de la clase resolvió mi problema.