[Résolu] Programmation Cocoa sous Mac os X - Exercice du chapitre 12
ifou
Membre
Bonjour,
j'essaie de faire l'exercice du chapitre 12 de "Programmation Cocoa sous Mac OS X" : après avoir gérer la fenêtre Preferences dans l'application RaiseMan, l'auteur laisse en exercice le fait de faire apparaitre un simple Panel "About' en chargeant son fichier XIB à partir du Bundle. Et j'y arrive bien: le panel s'affiche sans aucun problème. Seulement je veux aller plus loin: une fois que je ferme la fenêtre About dans l'application, je veux pouvoir la re-ouvrir en cliquant sur "About RaiseMan". Or cela ne marche pas. J'aimerais avoir votre avis sur cette question de débutant (PS: les corrections d'exercice de l'auteur n'offrent pas de correction pour cet exercice là .. )
J'ai associé une action à l'entrée de menu "About RaiseMan" à une méthode dans mon AppController (qui hérite de NSObject):
aboutPanel est un outlet vers la fenêtre About. J'affecte bien la fenêtre About au first responder (qui est donc l'instance de mon AppController puisque je le passe en paramètre de -loadNibNamed:owner: .
Mon but est d'afficher la fenêtre About about alors que son fichier NIB a déjà été chargé en mémoire auparavant. Je pensais qu'un simple showWindow: aurait suffit comme cela est fait avec la fenêtre Preferences (c'est le but du chapitre 12).
Comment faire ?
j'essaie de faire l'exercice du chapitre 12 de "Programmation Cocoa sous Mac OS X" : après avoir gérer la fenêtre Preferences dans l'application RaiseMan, l'auteur laisse en exercice le fait de faire apparaitre un simple Panel "About' en chargeant son fichier XIB à partir du Bundle. Et j'y arrive bien: le panel s'affiche sans aucun problème. Seulement je veux aller plus loin: une fois que je ferme la fenêtre About dans l'application, je veux pouvoir la re-ouvrir en cliquant sur "About RaiseMan". Or cela ne marche pas. J'aimerais avoir votre avis sur cette question de débutant (PS: les corrections d'exercice de l'auteur n'offrent pas de correction pour cet exercice là .. )
J'ai associé une action à l'entrée de menu "About RaiseMan" à une méthode dans mon AppController (qui hérite de NSObject):
- (IBAction)showAboutPanel:(id)sender<br />{<br /> <br /> if (!aboutPanel) {<br /> BOOL success = [NSBundle loadNibNamed:@"About"<br /> owner:self];<br /> NSLog(@"sucess is %d", success);<br /> } else {<br /> NSLog(@"aboutPanel Nib file is loaded yet");<br /> [[aboutPanel windowController] showWindow:self]; // <--- CRASH LORS DE SON INVOCATION!! :-/<br /> }<br />}
aboutPanel est un outlet vers la fenêtre About. J'affecte bien la fenêtre About au first responder (qui est donc l'instance de mon AppController puisque je le passe en paramètre de -loadNibNamed:owner: .
Mon but est d'afficher la fenêtre About about alors que son fichier NIB a déjà été chargé en mémoire auparavant. Je pensais qu'un simple showWindow: aurait suffit comme cela est fait avec la fenêtre Preferences (c'est le but du chapitre 12).
Comment faire ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai consulté rapidos la doc Apple sur les NSWindow et je suis tombé sur plusieurs sections intéressante. J'ai trouvé cette méthode qui m'a de suite interpellé, et j'ai modifié mon code pour tester:
Et ça marche!! Je peux ensuite fermer la boite About, puis un clic dans le menu la fait réapparaitre à nouveau.
Merci pour ton coup de main :-)
Yves
Pierre