¿cómo puedo obtener la vista actualmente activa (la vista principal que está siendo vista actualmente por el usuario) del delegado de la aplicación para fines de referencia?¿Cómo obtener la vista activa en una aplicación iOS del delegado de la aplicación?
Respuesta
Depende de cómo esté configurada su aplicación.
Normalmente, el delegado de su aplicación tendrá una propiedad de controlador de vista principal que le permitirá acceder a ella.
Para obtener su aplicación delegado
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
UIView *topView = appDelegate.viewController.view;
Si su aplicación tiene una propiedad de control de navegación en el delegado de la aplicación se puede hacer algo como esto.
UIView *topView = appDelegate.navigationController.topViewController.view;
La tercera línea me da un error: la propiedad 'navigationController' no se encuentra en el objeto de tipo 'kzAppDelegate' – zakdances
, entonces probablemente no estés usando un controlador de navegación. Mira la segunda línea de código en mi respuesta. – Randall
¡No funciona con vistas modales! – skywinder
puede utilizar [appDelegate.navigationController.topViewController class]
para registrar la clase del controlador o conseguir la propiedad del título saber de cuál se trata.
la esperanza que esto le ayuda
UINavigationController *navCnt = (UINavigationController *)self.window.rootViewController;
if([navCnt.topViewController isMemberOfClass:[WebViewController class]])
{
return UIInterfaceOrientationMaskAll;
}
else
return UIInterfaceOrientationMaskPortrait;
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIView *topView = window.rootViewController.view;
¡No funciona con vistas modales! – skywinder
En cualquier parte de la aplicación que puede conseguir su RootViewController Ver también como la:
id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate];
UIView *rootView = appDelegate.window.rootViewController.view;
¡No funciona con vistas modales! – skywinder
Todas las respuestas más no funciona con modal presentó ¡puntos de vista! Utilice este código en su lugar:
UIView * topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
funciona para mí, gracias :) –
encontré este y funciona muy bien para mí para todo tipo de segues y controladores de vista.
+ (UIViewController *) getTopController { UIViewController * topViewController = [UIApplication sharedApplication] .keyWindow.rootViewController;
while (topViewController.presentedViewController) {
topViewController = topViewController.presentedViewController;
}
return topViewController;
}
Trate Eric's answer:
+ (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
- 1. presentModalViewController del delegado de la aplicación
- 2. ¿Cómo obtener la versión de la aplicación y compilarla en una aplicación PhoneGap de iOS?
- 3. iOS Antecedentes descarga cuando la aplicación no está activa
- 4. ¿Controlador de vista del guión actual del delegado de la aplicación?
- 5. iOS: cómo obtener el idioma actual de la aplicación
- 6. blank QLPreviewController en la aplicación iOS
- 7. Delegado de aplicación - Cocoa
- 8. iOS versión de la aplicación
- 9. Llamando al método del controlador de vista desde la aplicación delegado
- 10. Cómo obtener la aplicación actual en Django
- 11. iOS - Compra en la aplicación y aplicaciónDidBecomeActive
- 12. Google Places API en la aplicación iOS
- 13. Aplicación de despertador en iOS
- 14. Muestra Settings.bundle Root.plist en una vista dentro de la aplicación
- 15. Cómo validar la aplicación de iOS pago
- 16. ¿Cómo obtener la ventana principal (delegado de la aplicación) de otra clase (subclase de NSViewController)?
- 17. Obtener la última ventana activa: Obtener Ventana previamente activa
- 18. Prisma: cambie la vista activa
- 19. Miniatura de la aplicación Vista
- 20. ¿Cómo usar la función "abrir en ..." para la aplicación iOS?
- 21. Cambiar el idioma de la aplicación iOS sobre la marcha
- 22. Programación de una aplicación universal en IOS
- 23. Salir de la aplicación en iOS 4.0
- 24. Aplicación iOS Delphi XE2 con compra en la aplicación
- 25. ¿Cómo construir y archivar la aplicación iOS?
- 26. Cómo obtener una vista de gesto como en la aplicación oficial de Facebook
- 27. _OBJC_CLASS_ $ Error en la aplicación de iOS
- 28. Botón Me gusta en la aplicación iOS
- 29. Objetivo-C: obtener información del menú de la aplicación externa
- 30. IOS Versión de la aplicación de numeración
definir la "vista principal". Podría haber varios objetos 'UIView' (y subclases) en pantalla a la vez. ¿Cuál esperarías obtener? –
Digamos que el usuario se encuentra actualmente en una pantalla para realizar una acción específica, quiero obtener el control de vista para la vista de contenedor para esa pantalla – David
. Deberá hacer un seguimiento de eso usted mismo. Al igual que las vistas, podría haber más de un controlador de vista activo en la pantalla. –