plus pestañas home como cerrar boton aplicaciones abiertas ios objective-c uiwindow uiapplication

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.