2009-09-10 2 views
4

J'ai un problème avec le menu de mon application. Je veux que quelques éléments du menu soient grisés en fonction de certaines variables BOOL.NSMenuItem activé l'état, la dénomination dynamique et l'action cible

En outre, je souhaite que certains de mes éléments de menu obtiennent des noms en fonction de certaines variables BOOL et exécutent ainsi différentes fonctions en fonction du nom de l'élément de menu. Est-ce possible? Lorsque vous utilisez Interface Builder, vous pouvez lier un élément de menu à une méthode IBAction. S'il-te-plaît dis moi comment faire ça.

Merci

Répondre

4

Voir la NSMenuValidation protocol.

Vous implémentez -validateMenuItem :, qui est utilisé pour déterminer si un élément de menu doit être activé ou désactivé. Il est appelé pour chaque élément de menu juste avant qu'un menu n'apparaisse.

+0

Merci Darren – King

1

Oui. Vous pouvez définir l'état activé d'un élément de menu et son titre par programme; consultez la documentation NSMenuItem. N'oubliez pas d'utiliser NSLocalizedString lors de l'obtention du format de titre.

+0

Merci vous Peter. – King

0

Pour la deuxième question; vous n'avez pas besoin d'utiliser Interface Builder pour connecter la cible/l'action aux éléments du menu.

Vous pouvez utiliser un code tel que ceci:

NSMenuItem *menuItem; // Set this to your menu item. 
// Set the target to an instance of a class which contains the action method. 
[menuItem setTarget:targetClass]; 
// Set the action to the (IBAction) method to call. 
[menuItem setAction:NSSelectorFromString(@"actionMethod")]; 
+0

Er, 'target' devrait généralement être une instance, pas une classe. Cela peut être une classe, mais ce n'est généralement pas ce que vous voulez. (Aussi, vous avez oublié un '') ''.) –

+0

Merci Peter. Corrigée. – Abizern

+0

Merci Abizern. – King

Questions connexes