web-dev-qa-db-fra.com

Comment supprimer une UIWindow?

Je pensais que c'était facile comme [myWindow resignKeyWindow] et [self.window makeKeyAndVisible] mais je suppose que non… Est-ce que vous savez quoi faire?

Merci :)

27
G33kz0r

N'appelez pas -resignKeyWindow directement, il était censé être remplacé pour exécuter du code lorsque votre UIWindows est supprimé. Afin de supprimer l'ancienne fenêtre, vous devez créer une nouvelle instance de UIWindow et la rendre -makeKeyAndVisible. L'ancienne fenêtre renonce à son statut de clé. Dans iOS 4, votre ancien UIWindow sera également récupéré, à condition que vous n’ayez aucune référence à ce sujet. Faire cela dans iOS 3.x aurait des effets désastreux. Vous a prévenu.

14
bioffe

La bonne façon de masquer une fenêtre consiste à définir la propriété hidden sur YES. Pour le supprimer de la propriété windows d'UIApplication, il vous suffit de libérer la fenêtre (dans ARC, vous définissez toutes les références sur nil).

Bien sûr, vous voudriez avoir une autre fenêtre en place pour le moment.

69
Nikolai Ruhe

Si vous avez une fenêtre autre que la fenêtre de l'application, utilisez-la ..

let mainWindow = UIApplication.shared.delegate?.window
mainWindow??.makeKeyAndVisible()
0
Avinash

Vous ne pouvez pas supprimer la fenêtre du délégué de l'application. Cependant, vous pouvez supprimer toutes les fenêtres personnalisées créées.

Pour supprimer la fenêtre, vous devez d'abord fournir un remplacement. Nous obtenons donc la fenêtre par défaut.

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

Nous avons maintenant accès à la fenêtre par défaut via la propriété window du délégué de l'application.

Maintenant, obtenez le contrôleur de navigation original ou personnalisé. S'auto-attribuer à rootViewController.

L'appel de makeKeyandVisible supprime toutes les fenêtres et affecte la fenêtre du délégué de l'application à la fenêtre de clé. Définissez rootViewController sur le contrôleur de navigation que vous venez de créer et vous êtes prêt à partir!

DEMONavigationController *demoNav = [[DEMONavigationController alloc]initWithRootViewController:self];
[appDelegate.window makeKeyAndVisible];
appDelegate.window.rootViewController = demoNav;
0
Dipesh Somvanshi