No creo que tengas que llamar a awakeFromNib en tu súper clase.
Verificar this.
Editar
que acaba de ejecutar una prueba rápida, aquí está el resultado:
Escenario 1: MainWindow.xib tiene una subclase UIViewController TestingAwakeFromNibViewController
, que tiene su propio archivo de plumilla TestingAwakeFromNibViewController.xib
.
TestingAwakeFromNibViewController tiene un Outlet UIButton llamado btn3. Prueba el siguiente código:
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"Btn3 %@",btn3);
NSLog(@"viewDidLoad");
}
-(void) awakeFromNib
{
[super awakeFromNib];
NSLog(@"Btn3 %@",btn3);
NSLog(@"awakeFromNib");
}
imprimiría:
Btn3 (null)
AwakeFromNib
Btn3 <UIRoundedRectButton: 0x64088e0; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x6408890>>
ViewDidLoad
Escenario 2: Extracción del archivo xib, la adición de un UIView como un hijo al interior TestingAwakeFromNibViewController MainWindow.xib, y añadiendo UIButton como una subvista a la UIView (y conectando la salida del botón UI a la salida apropiada de TestingAwakeFromNibViewController).
Ahora ejecuta el código anterior podría imprimir:
Btn3 <UIRoundedRectButton: 0x4e31c30; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4e31be0>>
viewDidLoad
Btn3 <UIRoundedRectButton: 0x4e31c30; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4e31be0>>
awakeFromNib
Significado viewDidLoad antes awakeFromNib.
tercer escenario: mismo que el segundo, apenas sin llamar [super awakeFromNib];
Btn3 <UIRoundedRectButton: 0x4e0ddf0; frame = (114 211; 72 37); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x4e0dda0>>
awakeFromNib
Ahora viewDidLoad aún no está recibiendo llamadas.
Por lo tanto, parece que los diferentes escenarios requieren una acción diferente, y tenemos que prepararnos de acuerdo con el que estamos actuando.
No estoy seguro de que tengas razón. Mira esto: http: //stackoverflow.com/questions/377202/which-should-i-use-awakefromnib-or-viewdidload – Idan
Entonces, ¿dónde está el conflicto con lo que estoy diciendo? El hecho es que cuando se produce una advertencia de memoria, la vista de controladores de vista (si no está visible) se establece en nulo y desasignado. Y cuando vuelve a ser visible, el controlador de vista carga su vista desde su archivo xib y establece 'self.view = viewLoadedFromXib' para que viewDidLoad se vuelva a llamar mientras no se configure de nuevo, no vuelve a llamar a awakeFromNib. – Zapko
Si no me cree o no escribo claramente, puede consultar [documentación] (http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html%23// apple_ref/doc/uid/TP40007457-CH101-SW19) usted mismo. De todos modos, será más útil. – Zapko