Gestion des menus
UniX
Membre
Salut.
Ca y est, je dois me lancer dans la gestion des menus. J'ai lu qu'il y avait 2 modes : automatique ou manuel, je crois que moi il va me falloir la manuelle, car l'activation de mes menus dépend de plusieurs paramètres (si un élément d'une NSTableView est sélectionné, si tel onglet d'une NSTabView est affiché, ...).
Par contre une question : il va falloir que je gère donc à la mimine tous mes menus. Comment faut-il s'y prendre ? Créer un outlet pour chaque menu, et ensuite accéder à ses sous-menus en utilisant les méthodes du type menuItemAtIndex: ?
Ca y est, je dois me lancer dans la gestion des menus. J'ai lu qu'il y avait 2 modes : automatique ou manuel, je crois que moi il va me falloir la manuelle, car l'activation de mes menus dépend de plusieurs paramètres (si un élément d'une NSTableView est sélectionné, si tel onglet d'une NSTabView est affiché, ...).
Par contre une question : il va falloir que je gère donc à la mimine tous mes menus. Comment faut-il s'y prendre ? Créer un outlet pour chaque menu, et ensuite accéder à ses sous-menus en utilisant les méthodes du type menuItemAtIndex: ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Oui et non... et surtout non !
-validateMenuItem:(NSMenuItem *)theMenuItem est appelé quand la gestion des menus est justement en automatique (ce que ne veut pas utiliser UniX). Et si c'est le cas, ce n'est pas le delegate qui doit implémenter cette méthode, mais l'objet target qui est relié au menu-item.
.
Même si la validation de tes menus se fait sur plusieurs critères peut-être un peu complexes (plusieurs conditions par exemple), rien ne t'empêche d'utiliser le mode automatique et donc justement de mettre le code pour valider ton menuItem dans cette méthode validateMenuItem
non ?
Tu as peut-être abandonné le mode automatique un peu vite, UniX ?
(Enfin moi ce que j'en dis... je suis pas encore rendu à ce stade )
Tu peux utiliser les 2.
En automatique, dans IB, tu dois relier le target/action de tous tes menu-items à un objet (typiquement ton objet contrôleur).
Ensuite, dans ledit objet, tu implémentes la méthode validateMenuItem: évoquée par SeoxyS.
L'argument de cette méthode est le menu-item (objet NSMenuItem) qui en encours de validation ou non.
A ce moment, tu peus alors faire ton setEnable en fonction de tes critères.
L'idéal est d'utiliser ou le tag ou le representedObject du menu-item pour facilement savoir à qui tu as affaire...
En manuel, soit tu créés un outlet pour chacun des menu-items à gérer, soit tu utilises une boucle qui parcours tous les menu-items de ton appli, et à l'aide du tag ou du representedObject, tu repères le menu-item pour faire le setEnable qui va bien.
.
En effet, étant donné que tous mes menus items sont reliés à mon objet controlleur, je n'ai qu'à implémenter une seule méthode qui fera l'analyse de tous mes critères.
En fait c'est super facile ...! :P