iphone - support - descargar software de ipad
cómo obtener mi UIWindow usando UIApplication? (4)
Solo tengo una ventana y probé
UIWindow* mWindow = [[UIApplication sharedApplication] keyWindow];
pero esto devolvió nil.
También probé:
UIWindow* mWindow = (UIWindow*)[[UIApplication sharedApplication].windows objectAtIndex:0];
Pero esto generó una excepción y la aplicación se cerró, cuando traté de imprimir
[[UIApplication sharedApplication].windows count]
Imprimió 0
Nota: Estoy poniendo esto en el método viewDidLoad de mi única controladora de vista y esta es completamente una nueva aplicación basada en la vista de iPad, así que no cambié nada, solo tratando de obtener la ventana
Por favor, ayúdame a conseguir este objeto
La forma más fácil es obtener la ventana del delegado de la aplicación en su lugar:
UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
// Do something with the window now
La ventana de clave de su aplicación no está configurada hasta [window makeKeyAndVisible]
en el delegado de su aplicación. Su UIViewController probablemente se está cargando desde un NIB antes de esta llamada. Esto explica por qué keyWindow
está volviendo nulo.
Afortunadamente, su controlador de vista no necesita pasar por UIApplication para obtener la ventana. Puedes hacer:
UIWindow *mWindow = self.view.window;
Si su ventana principal es una salida de su AppDelegate (que debería ser el caso), simplemente puede usar
MyAppDelegate* myDelegate = (((MyAppDelegate*) [UIApplication sharedApplication].delegate));
[myDelegate.window ...]
[[[UIApplication sharedApplication] windows] objectAtIndex:0]; // You can also check the count of this to make sure, because if there are no windows it will crash.