2010-11-08 8 views
6

Así que tengo dos vistas. Una carga de vistas cuando inicio la aplicación. Luego, cuando presiono un botón en esa vista, carga otra vista.Cuando cambio de una vista a otra, mi viewDidLoad no se llama por segunda vez?

- (IBAction)triggerGame 
{ 

leveldata = [[NSMutableDictionary alloc] init]; 

[leveldata setValue:@"hide" forKey:@"shootarrow"]; 

[leveldata writeToFile:[self levelFilePath] atomically:YES]; 
[leveldata release]; 


Papertoss_MaraAppDelegate *mainDelegate = (Papertoss_MaraAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[mainDelegate playGame]; 

} 

Esta acción provoca un método para la aplicación delegado pidió PlayGame, que se ve así:

- (void)playGame { 

[levelView.view removeFromSuperview]; 
[self.window addSubview:[gameView view]]; 
[UIView commitAnimations]; 
} 

Esto carga el nuevo punto de vista muy bien. Luego tengo otro botón que hace exactamente lo mismo, pero me devuelve a la primera vista. Y también, funciona genial. Puedo navegar de una vista a la otra muy fácilmente. Pero el único problema que tengo es que cuando intento cargar la segunda vista por segunda vez, no vuelvo a llamar a viewDidLoad. Probé esto teniendo un NSLog() en el método viewDidLoad.

Para que mi aplicación haga lo que quiero, necesito volver a llamar a viewDidLoad. Supongo que tal vez mi vista no está completamente descargada cuando cambio de una a otra.

Cualquier ayuda es muy apreciada.

Respuesta

9

Creo que necesita la función viewDidAppear. viewDidLoad solo se llama una vez por vista a menos que algo lo haga descargar, como una advertencia de memoria. Se llama a viewDidAppear cada vez que esa vista se vuelve visible.

+0

¿Qué pasa si necesito descargarlo, porque quería cargar diferentes capas dependiendo de qué botón presionar. ¿Como podría hacerlo? –

+0

Además, gracias a ambos por las respuestas rápidas. –

+0

nvm Lo tengo para trabajar. Gracias. –

4

Quiere -viewDidAppear: para "cada vez que se ve la vista".

Cuestiones relacionadas