2010-11-10 32 views

Répondre

2

- (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 si autoenablesItems: de l'hébergement NSMenu est réglé sur YES
  • 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.
+0

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

0

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

+0

Calling setHidden l'intérieur validateMenuItem n » t cacher le menu, je ne comprends pas pourquoi – dafi

+0

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é?) –