Comment puis-je obtenir la vue actuellement active (la vue principale actuellement vue par l'utilisateur) du délégué de l'application pour des raisons de référence?Comment obtenir la vue active dans une application iOS à partir du délégué de l'application?
Répondre
Cela dépend de la configuration de votre application. En règle générale, votre délégué d'application disposera d'une propriété de contrôleur de vue principale qui vous permettra d'y accéder.
Pour obtenir votre délégué app
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
UIView *topView = appDelegate.viewController.view;
Si votre application possède une propriété de contrôleur de navigation dans le délégué de l'application que vous pouvez faire quelque chose comme ça.
UIView *topView = appDelegate.navigationController.topViewController.view;
La troisième ligne me donne une erreur: Propriété 'navigationController' introuvable sur l'objet de type 'kzAppDelegate' – zakdances
vous n'utilisez probablement pas un contrôleur de navigation alors. Regardez la deuxième ligne de code dans ma réponse. – Randall
Ne fonctionne pas avec des vues modales! – skywinder
vous pouvez utiliser [appDelegate.navigationController.topViewController class]
pour ouvrir une session la classe du contrôleur ou d'obtenir la propriété de titre pour savoir lequel il est.
Hope this vous aide
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;
Ne fonctionne pas avec des vues modales! – skywinder
Partout dans l'application que vous pouvez obtenir votre RootViewController Voir aussi comme ça:
id<UIApplicationDelegate> appDelegate = [[UIApplication sharedApplication] delegate];
UIView *rootView = appDelegate.window.rootViewController.view;
Ne fonctionne pas avec des vues modales! – skywinder
Toutes les meilleures réponses ne fonctionne pas avec modale présenté vues! Utilisez ce code à la place:
UIView * topView = [[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
fonctionne pour moi, merci :) –
J'ai trouvé et il fonctionne très bien pour moi pour tous les types de contrôleurs et de enchaînements vue. + (UIViewController *) getTopController { UIViewController * topViewController = [UIApplication sharedApplication] .keyWindow.rootViewController;
while (topViewController.presentedViewController) {
topViewController = topViewController.presentedViewController;
}
return topViewController;
}
Essayez Eric's answer:
+ (UIViewController*) topMostController
{
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
- 1. Obtenir des données à partir du Web dans iOS
- 2. Comment obtenir la ChildWindow active d'une application?
- 3. Cadre iOS pour obtenir l'audio à partir du connecteur Dock
- 4. Comment mettre à jour une vue à partir du code dans une application Eclipse RCP
- 5. comment supprimer la sous-vue du délégué de l'application?
- 6. Comment obtenir LastActivityDate lors de l'utilisation du programme d'installation Active Directory dans une application .net
- 7. Comment animer la disposition des éléments de l'interface utilisateur dans une vue personnalisée d'une application iOS?
- 8. Comment obtenir la vue Template Chooser/Document Browser sur iOS?
- 9. Comment changer la vue active dans une fenêtre?
- 10. définir délégué dans l'objectif-c sur iOS
- 11. Comment appeler une méthode du délégué de l'application à partir d'un UIViewController?
- 12. une vue de table à partir de la vue modale
- 13. Comment obtenir une UIView principale (fenêtre?) Dans iOS?
- 14. Comment puis-je obtenir une instance de délégué EventHandler réelle à partir d'un événement dans VB.NET?
- 15. Comment charger une sous-vue à partir de la vue principale?
- 16. Comment obtenir un objet délégué à partir d'un EventInfo?
- 17. Comment intégrer un profil de provisioning dans une application iOS?
- 18. Possibilité d'utiliser UIActionSheet à partir du délégué d'application?
- 19. comment ouvrir une application à partir du widget dans Android?
- 20. Comment obtenir une instance Active Excel?
- 21. Modification de la vue actuelle dans une application uitabbar iOS iPad
- 22. ApplicationWillTerminate dans iOS 4.0
- 23. Comment obtenir de la valeur à partir du haricot Struts?
- 24. Comment puis-je obtenir le délégué?
- 25. Développement iOS: Comment puis-je retourner des données à partir d'une vue modale?
- 26. iPhone CoreData récupérer à partir de délégué?
- 27. Modèle d'application iOS basé sur la vue
- 28. Comment donner un focus à une vue lors du lancement de mon application?
- 29. Comment obtenir la dernière URL active wpf
- 30. Accéder aux propriétés de l'objet à partir du délégué
Define "vue principale". Il pourrait y avoir plusieurs objets 'UIView' (et sous-classes) à l'écran à la fois. Lequel voulez-vous obtenir? –
Dites que l'utilisateur est actuellement sur un écran pour effectuer une action spécifique, je veux obtenir le viewcontroller pour la vue du conteneur pour cet écran – David
Vous devrez garder une trace de vous-même. À l'instar des vues, plusieurs contrôleurs de vue peuvent être actifs à l'écran. –