Cuando programa sin una punta, estoy bajo la impresión de que tengo que llamar loadView para inicializar mi punto de vista, como esto:El uso adecuado de loadView y viewDidLoad con UIViewController sin puntas/xibs
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nil bundle:nil];
if (self) {
// Custom initialization
[self loadView];
}
return self;
}
(I . han establecido nibNameOrNil = nula, ya que no hay mina)
Entonces, me juego hasta la vista, así:
- (void) loadView {
self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 367)];
[self viewDidLoad];
}
ésta es hacer todo lo demás en viewDidLoad.
Todavía no estoy seguro de si debo hacer las llamadas a loadView y viewDidLoad de esta manera. No reciben llamadas automáticamente.
Cuál es confuso es en la documentación de la referencia de clase UIViewController:
loadView Discusión
Nunca se debe llamar a este método directamente. El controlador de vista llama al este método cuando se solicita la propiedad de vista, pero actualmente es nula. Si crea sus vistas manualmente, debe anular este método y usarlo para crear sus vistas. Si utiliza Interface Builder para crear sus puntos de vista e inicializar la vista del controlador, es decir, inicializar la vista utilizando el initWithNibName: paquete: método, establece la nibName y propiedades nibBundle directamente, o crear tanto sus puntos de vista y vista controlador en Interface Builder; entonces no debe anular este método .
Por lo tanto, no entiendo cómo se llama a loadView si nunca debo llamarlo directamente.
La implementación predeterminada de este método busca información de nib válida y utiliza esa información para cargar el archivo nib asociado. Si no se especifica información de punta, la implementación predeterminada crea un objeto UIView simple y la convierte en la vista principal.
No entiendo cómo funciona eso: la creación de un dolor UIView.
Si reemplaza este método con el fin de crear sus puntos de vista de forma manual, debe hacerlo y asignar la vista raíz de la jerarquía de la propiedad vista. (Las vistas que cree deben ser instancias únicas y no se deben compartir con ningún otro objeto de controlador de vista.) Su implementación personalizada de este método no debe llamar a super.
Si desea realizar una inicialización adicional de sus vistas, realice en el método viewDidLoad. En iOS 3.0 y posterior, también debe anular el método viewDidUnload para liberar cualquier referencia a la vista o su contenido.
Bien, hasta ahora no dice cómo se llama a viewDidLoad. Así que para viewDidLoad:
viewDidLoad Discusión
Este método se llama después de que el controlador de vista se ha cargado su vistas asociadas en la memoria. Este método se llama independientemente de si las vistas se almacenaron en un archivo de punta o se crearon programáticamente en el método loadView. Este método es más comúnmente utilizado para realizar pasos de inicialización adicionales en vistas que están cargadas desde archivos nib.
Llamado por qué?
Dado que estos métodos no se llaman automáticamente en mi código, me queda la sensación de que tengo que llamarlos yo mismo. Pero todavía no entiendo claramente la documentación de que esto es lo correcto.
Hola @Draco Por favor, comienza una recompensa por esta pregunta ... Todavía estoy sufriendo de esta situación? – Vishal16