2011-07-25 5 views

risposta

47

Prova:

UIWindow *frontWindow = [[[UIApplication sharedApplication] windows] 
                  lastObject]; 

o semplicemente:

UIWindow *frontWindow = [[UIApplication sharedApplication] keyWindow]; 
+0

keyWindow ha fatto per me – Eugene

+0

'keyWindow' restituito pari a zero per me. 'lastObject' ha restituito il risultato corretto. Grazie. –

+2

È necessario utilizzare firstObject e non lastObject. Vedi documentazione "windows" – harryhorn

3

Se si dispone di un puntatore ad una certa visualizzazione secondaria nella finestra, è possibile accedere facilmente la sua finestra:

UIWindow *window = mySubview.window; 
12

Il La finestra principale si trova meglio utilizzando UIWindow * mainWindow = [UIApplication sharedApplication].windows.firstObject;

L'utilizzo di keyWindow può restituire una tastiera o una finestra UIAlertView, che si trova sopra la finestra dell'applicazione.

+0

Questa è la risposta giusta con spiegazione! Mi sono rotto la testa cercando di capire perché la mia vista scompare quando c'è una segnalazione. – trickster77777

2

Semplicemente intelligente, funziona da qualsiasi classe:

[(YourAppDelegate *)[[UIApplication sharedApplication] delegate] window]; 

Nota: non dimenticate di importare la classe AppDelegate