ios - pestañas - Obtener ventana principal de la aplicación
como cerrar aplicaciones en iphone sin boton home (8)
UIApplication tiene un método keyWindow
, sin embargo, si se muestra una vista de alerta, esto devuelve la ventana de la vista de alerta y no la ventana principal de la aplicación.
¿Cómo puedo obtener la ventana principal de la aplicación?
El UIApplicationDelegate
generalmente tiene una referencia a la "ventana principal":
[[[UIApplication sharedApplication] delegate] window];
Además, UIApplication
tiene una serie de ventanas [[UIApplication sharedApplication] windows]
.
Ver la referencia de la clase UIApplication .
En Swift:
UIApplication.sharedApplication().delegate?.window
No estoy 100% seguro de que esto funcione en todos los casos, pero debería funcionar:
UIWindow *mainWindow = [UIApplication sharedApplication].windows[0];
Las ventanas se ordenan al revés, por lo que la ventana principal siempre debe estar en el índice 0.
Para mi estuve presentando un popViewController
self.presentViewController(popViewController, animated: true, completion: nil)
y luego en el viewDidLoad()
de este popViewController estaba agregando una subvista , esto causa el error en la consola y un error de visualización. Así que tengo que encontrar otra solución para que funcione. Espero que esto ayude.
Swift 3
if let window = NSApplication.shared().windows.first {
// you can now modify window attributes
}
Swift 3
class func sharedInstance() -> AppDelegate{
return UIApplication.shared.delegate as! AppDelegate
}
Swift versión 3.0 de la respuesta de rmaddy :
let window = UIApplication.shared.windows.first
También debo agregar que, dado que iOS 8.0 UIAlertController
ha reemplazado a UIAlertView
y como controlador de vista, es posible que ya no tenga que enfrentar el problema de la creación de nuevas ventanas.
UIApplication *application = [UIApplication sharedInstance];
NSarray *appWindows = [NSArray arrayWithArray:application.windows];
UIWindow *mainWindow = [appWindows objectAtIndex:0];
No estoy seguro, pero esto podría ayudar.