En una subclase UIViewController, que tienen los siguientes métodos:UIViewController: viewWillAppear se llama, no viewDidAppear
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// do something
myTextField.text = @"Default";
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
// do something
[myTextField selectAll:self];
[myTextField becomeFirstResponder];
}
- (void)viewDidLoad {
[super viewDidLoad];
// do something
myTextField.delegate = self;
}
La SEMILLA se ha creado usando el Interface Builder. El controlador de navegación empuja el objeto del controlador de vista correspondiente a través de pushViewController.
El comportamiento intempestivo es mostrar una entrada de texto predeterminada en un campo de texto, seleccionar el texto completo y establecer el campo de texto como primera respuesta. [Editar: He notado que seleccionar todos los y haciendo que el primer respondedor no tenga sentido ya que la selección desaparecería; aún así, me pregunto por qué los métodos se comportan como se describe a continuación.]
Sin embargo, mientras se invocan los métodos viewDidLoad y viewWillAppear, no se llama al método viewDidAppear. ¿Alguien puede decirme por qué? La mayoría de las preguntas que encontré en la web y que aquí tratan con ambos viewWillAppear/viewDidAppear no funcionan; También entendí que en las subvistas o vistas creadas mediante programación, estos métodos no son evocados; pero esto no se aplica en el caso y también me pregunto por qué uno de estos métodos de "ciclo de vida" se evoca y el otro no.
¿Alguna idea? ¡Gracias!
No debería haber un problema de memoria, al menos didReceiveMemoryWarning no se llama. Una limpieza de todos los objetivos no ayudó. Así que seguí tu consejo y paso a paso "copié" la clase en un nuevo proyecto. Y funciona. : -/He agregado todos los métodos que anulo en mi clase original y en un proyecto funciona, en el otro no. En ambos casos, la vista se muestra mediante pushViewController en un controlador de navegación. La única diferencia: en el proyecto de prueba hay un controlador de navegación, en mi proyecto hay tres (el controlador de la raíz es un controlador de tabbar) –
@sven - Quiero cambiar la vista del título de la barra de navegación. Parece que la vista aún no se ha desplazado a la barra de navegación cuando se activa viewWillAppear. – OmniBus