2010-11-08 9 views
6

Quindi ho due visualizzazioni. Una vista viene caricata quando avvio l'app. Quindi quando premo un pulsante su quella vista, carica un'altra vista.Quando passo avanti e indietro tra le visualizzazioni, my viewDidLoad non viene chiamato una seconda volta?

- (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]; 

} 

Questa azione fa scattare un metodo per l'attuazione delegato chiamato visualizzarloGame, che assomiglia a questo:

- (void)playGame { 

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

Questo carica la nuova vista bene. Poi ho un altro pulsante che fa la stessa identica cosa, ma mi riporta alla prima vista. Ed anche, funziona alla grande. Sono in grado di navigare da una vista all'altra molto facilmente. Ma l'unico problema che ho, è quando provo a caricare la seconda vista una seconda volta, il viewDidLoad non viene chiamato di nuovo. Ho provato questo avendo un NSLog() nel metodo viewDidLoad.

Per la mia app per fare ciò che voglio ho bisogno che viewDidLoad venga chiamato di nuovo. Immagino che forse la mia vista non sia completamente scarica quando passo da una all'altra.

Qualsiasi aiuto è molto apprezzato.

risposta

9

Penso che tu abbia bisogno della funzione viewDidAppear. viewDidLoad viene chiamato una sola volta per visualizzazione a meno che qualcosa non lo faccia scaricare, ad esempio un avviso di memoria. viewDidAppear viene chiamato ogni volta che la vista diventa visibile.

+0

E se ho bisogno di scaricarlo, perché volevo che caricasse livelli diversi a seconda del pulsante da premere. Come potrei farlo? –

+0

Plus, grazie per entrambe le risposte rapide. –

+0

nvm Ho capito che funziona. Grazie. –

4

Si desidera -viewDidAppear: per "ogni volta che viene visualizzata la vista".