No ver la inicialización del controlador en viewDidLoad
. Este es un error común.
Para la materia que sólo debe suceder una vez cuando se carga el controlador de vista, hacerlo en el método init del controlador, así:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)bundleOrNil
{
if ((self = [super initWithNibName:nibNameOrNil bundle:bundleOrNil]))
{
//do your initialisation here
}
return self;
}
El método initWithNibName:bundle:
se llama antes se carga la vista desde la plumín, y solo se llama una vez en la vida útil del controlador de vista.
La vista del controlador se puede cargar y descargar varias veces durante la vida útil del controlador y se llamará viewDidLoad
en todo momento. Se puede descargar cuando no está en la pantalla, generalmente si la memoria es baja.
Si configura cosas en viewDidLoad
(por ejemplo, agregar subvistas mediante programación) siempre debe volver a desactivarlas en viewDidUnload
.
Piense en viewDidLoad
y como siendo como el init/dealloc para la propiedad de vista del controlador de vista. Para las cosas que se relacionan con las vistas, créelo y suéltelo en esos métodos. Para las cosas que se relacionan con el controlador mismo, créelo y suéltelo en initWithNibName
y dealloc
.
UPDATE: En iOS 6 y más tarde, viewDidUnload
nunca es llamado más (a menos que la vista se establece explícitamente a cero en el código), y así viewDidLoad
sólo se suelen llamarse una vez en la vida de un controlador de vista . Esto hace que los consejos anteriores sean menos críticos, pero sigue siendo la mejor práctica, y sigue siendo necesario si necesita admitir iOS 5 y versiones anteriores.
ACTUALIZACIÓN 2: Si va a cargar el controlador de vista de un guión (que ahora es la práctica recomendada) en lugar de crear mediante programación a continuación, no se llamará initWithNibName:bundle:
. Use initWithCoder:
o awakeFromNib
para inicializar su controlador en su lugar.
Gracias por el comentario. – Stanley
El comentario no es correcto.Se invoca cada vez que se carga la vista de su controlador de vista, no solo la primera vez. –
Gracias por la corrección ... – Stanley