Réouvrir la fenêtre principale d’une application en cliquant dans le Dock
Lorsque vous développez une application contenant une seule fenêtre principale, quand vous fermez celle ci, vous pouvez soit terminer directement l’application, soit laisser l’application tourner et réouvrir la fenêtre en cliquant sur l’icône du Dock. Nous allons ici nous intéresser à ce second cas.
Afin de pouvoir réafficher la fenêtre, il faut déjà s’assurer que celle ci ne soit pas désallouée de la mémoire. Considérons qu’il existe un outlet « window » désignant la fenêtre principale de l’application. Lors du chargement de l’interface, nous allons dire à la fenêtre de ne pas effectuer de release sur elle même lorsqu’elle se ferme. Ainsi, tout son contenu sera sauvegarder.
1 2 3 | - (void)awakeFromNib { [self.window setReleasedWhenClosed:NO]; } |
L’étape suivante est de savoir lorsque l’on clique sur l’icône du Dock. Dans le delegate de NSApplication, la méthode « applicationShouldHandleReopen:hasVisibleWindows: » est appelée lorsque l’on ouvre l’application même si elle est déjà ouverte ou lorsque l’on clique sur l’icône du Dock. Il faut donc s’assurer que notre contrôleur soit bien le delegate de l’application avant de réimplémenter cette méthode. Dans cette réimplémentation, il suffit de dire à la fenêtre de se réafficher :
1 2 3 4 | - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag { [self.window makeKeyAndOrderFront:self]; return YES; // Valeur retournée par défaut } |
Vous pouvez retrouver un code plus complet dans cet exemple d’application : ReopenWindow
Mots-clefs :Cocoa, Dock, NSApplication, NSWindow