iOS: ¿Cómo saber si se llamó a viewDidLoad?

¿Hay un BOOL o alguna otra forma de saber si viewDidLoad: se ha llamado?

Necesito cambiar una propiedad de vista cada vez que mi vista entró activa, pero si la vista nunca se ha cargado, no quiero activar prematuramente viewDidLoad :. Si no hay manera de decir fácilmente si viewDidLoad: ha sido llamado, simplemente agregaré un BOOL llamado set cargado a NO en el controller de vista init, luego cambiaré las properties de vista después de haber ingresado activo si la carga es SÍ o en la vista Willappear: Si se carga NO, luego se establece cargado en SÍ.

Use isViewLoaded . Aparte de eso, hace exactamente lo que quieres, no hay mucho que decir al respecto. La documentation es tan simple como:

Llamar a este método informa si la vista está cargada. A diferencia de la propiedad de vista, no intenta cargar la vista si aún no está en la memory.

Quizás debería iniciar su UIView en viewDidLoad , y luego cambiarlo de la manera que necesite dentro de viewWillLayoutSubviews .

Aquí está la respuesta pedante a esta pregunta. Si desea saber cuándo se viewDidLoad , debe implementar viewDidLoad en su controller de vista

 - (void)viewDidLoad { [super viewDidLoad]; viewDidLoadCalled = YES; // Not actually the best way to do this... // Set up more view properties } 

Pero como dice Tommy, realmente necesitas usar isViewLoaded . Esto soluciona el problema de hacer un cheque como

 if (!self.view) { // do something } 

que inadvertidamente carga la vista en virtud de preguntar por ella.

Tenga en count que para el momento en que se viewWillAppear: la vista siempre se habrá cargado. Además, en las versiones anteriores (anteriores a iOS 6, creo), la vista puede downloadse y volverse a cargar muchas veces a lo largo de la vida del controller de una vista. Consulte el muy bonito diagtwig del ciclo de vida de Big Nerd Ranch para el comportamiento anterior. Es casi lo mismo en iOS 6+, excepto que la vista no se descarga en condiciones de poca memory y viewDidUnload no recibe llamadas:

introduzca la descripción de la imagen aquí