Désactiver des items de menu
muqaddar
Administrateur
Soit 10 menus popup constitués de 15 items chacun environ.
Soit 4 ou 5 items devant être désactivés dans chaque menu, ici, tous ceux dont le tag==0.
Soit cette fonction :
[tt]- (BOOL)validateMenuItem:(NSMenuItem*)anItem {
if ([anItem tag]==0) {
return NO;
}
return YES;
}[/tt]
Cela ne marche pas, je suppose que c'est parce que les menus sont construits dans IB... et non par le code.
Comment procéder , notamment si je dois passer par le code (ce qui est p-e dommage)... Y a t-il un moyen de recharger un menu de IB dans une fonction ?
Soit 4 ou 5 items devant être désactivés dans chaque menu, ici, tous ceux dont le tag==0.
Soit cette fonction :
[tt]- (BOOL)validateMenuItem:(NSMenuItem*)anItem {
if ([anItem tag]==0) {
return NO;
}
return YES;
}[/tt]
Cela ne marche pas, je suppose que c'est parce que les menus sont construits dans IB... et non par le code.
Comment procéder , notamment si je dois passer par le code (ce qui est p-e dommage)... Y a t-il un moyen de recharger un menu de IB dans une fonction ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[tt]
   [monMenu setAutoenablesItems:NO];
[/tt]
C'est bizarre que ça ne marche pas... Ta fonction est-elle vraiment appelée ? Si tu mets des NSLog("toto") dans et hors du if, ça donne quoi ? N'y a-t-il pas une faute de frappe dans ton code non reproduite dans l'exemple minimal que tu donnes ? Les tags sont-ils vraiment à 0 ?
Bref, pour l'instant, je ne vois pas de raisons pour lesquelles ça échouerait.
+
Chacha
Peut-on forcer l'appel ?
@Eddy : je ne passe pas par le code pour construire...
Je viens de regarder en vitesse, chez moi ça marche parfaitement : j'ai un NSPopupButton dont l'action est connectée à une IBAction quelconque d'un objet quelconque. Dans cet objet, j'ai aussi mis un validateMenuItem qui est bien appelé automatiquement.
t'aurais pas fait une faute de frappe dans le prototype de
-(BOOL) validateMenuItem:(id)sender
?
+
Chacha
[edit]
Ah, oui, si tu l'as fait, enlève donc le :
[monMenu setAutoenablesItems:NO];
il doit être activé (et il l'est par défaut)
[/edit]
Ah ben c'est pour ça. Apparemment, pour que le validateMenuItem soit appelé automatiquement, il faut que l'action du menu soit associée à un objet. Dans ton cas, ça ne coûte pas cher, tu n'as qu'à rajouter un
à l'objet dans lequel tu fais le validateMenuItem, et y relier tes popups. Là , ça devrait fonctionner.
+
Chacha
[edit]
Rendons à César...
Eddy, premier sur la détection de bugs
[/edit]
Merci à vous deux !
ça marche nikel chrome avec le target et la petite astuce de chacha... :adios!:<br />
Une petite capture pour vous remercier :
[Fichier joint supprimé par l'administrateur]
Fallait s'en douter : menu-action et validateMenuItem... cellier !
Bon, je sors.