2012-07-08 15 views
7

Tengo una aplicación basada en la barra de pestañas con 3 pestañas (vistas). ¿Cómo podría, ya sea en la aplicación delegada o en la primera pestaña cargada, cargar todo el contenido de las otras 2 vistas en segundo plano?Objetivo C Vistas de precarga de iOS

Ahora tengo una vista web en cada una de las vistas en cuestión. Parte de mi problema es que están cargados en el viewDidLoad pero causan una espera con una pantalla en blanco

Gracias

Respuesta

8

La respuesta no es tan claro para mí .. Por lo tanto, usted tiene 3 UIViewController (o subclases de las mismas) contenidas en un UITabBarViewController, la manera de obligarlos a cargar su punto de vista es llamar a la propiedad -view en cada una de ellas en el AppDelegate rico antes de agregar a la instancia UITabbarViewController. Algo como esto:

UIViewController * myViewController = [[UIViewController alloc] initWithNibName:@"mynib" bundle:nil]; 
[myViewController view];//<--here you are forcing the view to be loaded before it will be called from the tabbatviewcontroller 

Ésta es una manera de evitar (no en todos) el comportamiento que está experimentando ... conceptos de carga en el fondo son mucho más complicado.

7

Trata de:

viewController.view.hidden = NO; 

para cualquier viewController desea pre-carga y de TI ha beeb asignado e inicializado. Es decir, después de alloc e initWithNibName: ... se ha hecho.

+0

Si mal no recuerdo, en realidad puede usar cualquier declaración con 'viewController.view', y obtener el mismo efecto. Creo que la propiedad 'view' probablemente se implemente con carga diferida, por lo que tan pronto como alguien intente hacer referencia a ella, se carga. – Nate

+4

¡Pero este no requiere un "retorno" así que no se muestran advertencias! :) –

+0

Esto es incluso más importante en Xcode 6 (al menos cuando se usa Swift) que informa un error cuando no se utiliza el valor de viewController.view. –

4

Me suelen utilizar algo como esto:

if (vc.view == nil)  // force load of view 
{ 
    NSLog(@"%s ***** ERROR: view == nil: %@", __PRETTY_FUNCTION__, vc); 
} 

NOTA: Después de llamar vc.view, la vista debe no ser nulo - que es un error de asignación bastante serio.

Cuestiones relacionadas