2011-03-02 13 views
11

¿Cuál es la diferencia entre viewDidLoad() y LoadView()? ¿De qué manera son diferentes el uno del otro?viewDidLoad(), LoadView()

¿Cuál es mejor cuando desarrollamos aplicaciones sin usar XIB?

Gracias.

+0

Pls intente este enlace http://stackoverflow.com/questions/573958/iphone-sdk-what-is-the-difference-between-loadview-and-viewdidload – visakh7

Respuesta

-3

Si está desarrollando aplicaciones sin necesidad de utilizar xibLoadView() método se llama y si hay un xib continuación ViewDidLoad método se llama

lo tanto, es mejor utilizar el método loadView.

+9

Esto no es verdad. ViewDidLoad se llama para mí independientemente – MobileMon

+0

¡Pero cuando escribo el código en ViewDidLoad también funciona! Por favor explica por qué funciona eso. (No estoy usando ningún guión gráfico) –

0

¿No es obvio?

viewDidLoad se llama ... Cuando la vista termina de cargarse.

Se llama a loadView cuando se carga la vista.

Ninguno es mejor o peor. Todo depende de tu diseño.

Buena suerte :)

+1

No hay una gran respuesta. La diferencia crucial, como se afirma en otras respuestas, es si estás (a) usando un xib/nib o (b) creando de forma programática la interfaz de usuario. –

47

ViewDidLoad se invoca cuando finaliza la carga de la vista y se invoca loadView cuando se inicia la carga.

Y cuando haces un nuevo proyecto que vea los comentarios sobre estos métodos que da claramente una punta cuándo se debe utilizar que funcionan

ver este

/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
} 
*/ 


/* 
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 
*/ 

Estos comentarios son claros y fáciles de entender.

7

Si tiene la intención de utilizar IB para construir su UI, debe hacer todas las publicaciones de inicialización de IB en viewDidLoad. La clase no llamará a loadView en absoluto si usa una punta para inicializar un controlador.

Si inicializa el controlador en el código, viewController llamará primero a loadView y luego a viewDidLoad. Puede hacer toda su inicialización en loadView o viewDidLoad, según sus preferencias.

Sin embargo, si decide utilizar loadView, asegúrese de configurar la propiedad de vista antes de intentar leer self.view, de lo contrario, entrará en un bucle infinito y se bloqueará.

+0

de acuerdo con la documentación que no debe llamar '[super loadView]'; se supone que debes establecer la propiedad 'view' tú mismo – user102008

+0

Enmendé mi respuesta. ¿Qué loadView de UIViewController es iniciar una vista en blanco. Supongo que podría ser un desperdicio si la implementación del usuario desata la vista establecida por super, pero no dolería. – futureelite7

0

controlador de vista carga su vista desde el plumín asociado a él si no hay plumín asociado, entonces automáticamente llamó a su método loadView() para completar su Vista. En ese caso, necesita implementar el método loadView(). de forma predeterminada devuelve nulo

cuando su vista se carga a la memoria El método viewDidLoad() se llama aquí, puede hacer su inicialización personalizada de acuerdo con sus necesidades.

2

Si inicializa su vista desde el archivo stroyboard o xib, no anule este método ni llame a [super loadView] dentro. si llama [super loadView] dentro del método, es mejor que nunca anule este método y ponga el siguiente código en su método viewDidLoad.

si inicializa su vista mediante programación, NUNCA debe llamar a [super loadView]. y debe asignar su propiedad rootView a self.view, o puede obtener un bloqueo perfecto.

18
viewDidLoad() 

se debe utilizar cuando carga su vista desde un NIB y desea realizar cualquier personalización después del inicio.

LoadView() 

se va a utilizar cuando se desea crear la vista mediante programación (sin el uso de Interface Builder).

Cuestiones relacionadas