En utilisant validateUserInterfaceItem, il est possible de désactiver/activer un élément de menu, mais j'ai besoin d'un comportement similaire pour masquer les éléments de menu, avez-vous quelques conseils?Cocoa validateUserInterfaceItem et l'élément de menu se cachant
Répondre
- (BOOL) validateMenuItem: (NSMenuItem *) ligneMenu
Quelques détails dans le docs.
Mise à jour:
NSMenus ne cachent pas NSMenuItems si validateMenuItem:
retours NO
. Le NSMenuItem correspondant est désactivé (ce qui indique à l'utilisateur que la fonctionnalité est présente, mais actuellement non applicable).
Ce comportement est également suggéré dans Apple's HIG. (Voir le deuxième paragraphe du "Nommer les éléments du menu" section)
Deux autres notes sur enabled
de NSMenuItem État:
setEnabled
ne fonctionne que siautoenablesItems:
de l'hébergement NSMenu est réglé surYES
- La valeur par défaut l'implémentation de
validateMenuItem:
semble traverser la chaîne du répondeur pour vérifier si la cible/action d'un NSMenuItem est disponible.
Vous pouvez utiliser - (BOOL) validateMenuItem: pour supprimer un élément de menu lorsqu'il n'était pas nécessaire et l'insérer si nécessaire.
Voir la Menu documentation
Calling setHidden l'intérieur validateMenuItem n » t cacher le menu, je ne comprends pas pourquoi – dafi
Avez-vous essayé d'appeler setHidden d'un autre endroit? Je l'utilise dans un de mes projets (aussi pour un menu contextuel) et ça fonctionne comme un charme là-bas. Peut-être quelque chose de trivial (Outlet pas connecté?) –
Vous avez raison, mais j'ai un menu contextuel et je veux montrer seulement des éléments « contextuels » valables au lieu d'avoir douzaine d'éléments de menu et seulement un couple activé – dafi