NSMenuItem init...action???
Hello,
J'ai un NSMenu contenant des NSMenuItem... sauf qu'ils sont grisés !?
quéqué? le noRate ne devrait pas être grisé pourtant il l'est
J'ai un NSMenu contenant des NSMenuItem... sauf qu'ils sont grisés !?
- (id)init<br />{<br /> self = [[NSMenu alloc] initWithTitle:@"AudioRatingMenu"];<br /> NSMenuItem *noRateItem = [[NSMenuItem alloc] initWithTitle:@"No Rate" action:@selector(setNoRate:) keyEquivalent:@""];<br /> NSMenuItem *oneRateItem = [[NSMenuItem alloc] initWithTitle:@"" action:@selector(setOneRate:) keyEquivalent:@""];<br /> NSMenuItem *twoRateItem = [[NSMenuItem alloc] initWithTitle:@"" action:@selector(setTwoRate:) keyEquivalent:@""];<br /> NSMenuItem *threeRateItem = [[NSMenuItem alloc] initWithTitle:@"" action:@selector(setThreeRate:) keyEquivalent:@""];<br /> NSMenuItem *fourRateItem = [[NSMenuItem alloc] initWithTitle:@"" action:@selector(setFourRate:) keyEquivalent:@""];<br /> NSMenuItem *fiveRateItem = [[NSMenuItem alloc] initWithTitle:@"" action:@selector(setFiveRate:) keyEquivalent:@""];<br /> [oneRateItem setImage:[NSImage imageNamed:@"OneStar"]];<br /> [twoRateItem setImage:[NSImage imageNamed:@"TwoStar"]];<br /> [threeRateItem setImage:[NSImage imageNamed:@"ThreeStar"]];<br /> [fourRateItem setImage:[NSImage imageNamed:@"FourStar"]];<br /> [fiveRateItem setImage:[NSImage imageNamed:@"FiveStar"]];<br /> [self addItem:noRateItem];<br /> [noRateItem release];<br /> [self addItem:oneRateItem];<br /> [oneRateItem release];<br /> [self addItem:twoRateItem];<br /> [twoRateItem release];<br /> [self addItem:threeRateItem];<br /> [threeRateItem release];<br /> [self addItem:fourRateItem];<br /> [fourRateItem release];<br /> [self addItem:fiveRateItem];<br /> [fiveRateItem release];<br /><br /> return self;<br /><br />}<br /><br />- (void)setNoRate:(NSMenuItem *)sel<br />{<br /> NSLog(@"tamere");<br />}
quéqué? le noRate ne devrait pas être grisé pourtant il l'est
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Par ailleurs, pourquoi définir les titres des menus par programme ? C'est bien plus simple de passer par IB
Et - (void)setAutoenablesItems:(BOOL)flag pour NSMenu (les items seront desactivés s'ils n'ont pas d'action/selector.
N'oublie pas setTarget: pour bien préciser la cible de l'action/selector
Je te conseil de faire une fonction que crée les menuItems pour limiter le code en double. Genre newMenuItemWithTitle: target: selector: image: tag: menu:
Eaglelouk vous dit merci
Ds mon menu je voulais les étoiles à la iTunes (donc passé par Photoshop etc... etc.. en plus pas pratique pour remplir un NSMenu à cause du "setImage" pour chaque NSMenuItem). Maintenant que c'est fait je suis fasse à un autre problème, celui de la selection d'une row de mon tableau (ça devient bleu bien sûr) et ducoup mes étoiles grises ne sont plus visibles enfin quasiment plus...
Bon ben alors on rajoute des étoiles blanches et on utilise une notif pour... nan !
Alors Mister Renaud (le copain du renard) m'a filé une astuce très sympatoche :
à l'initalization d'un NSMenuItem on lui donne un titre : @** (pour 2 étoiles") mais en localized donc comme ceci : NSLocalizedString(@**, nil)
Ds notre localizable.strings on met : "**" = "??"; // Etoiles implémentées avec la palette des caractères spéciaux (remplacées par des ?? avec Safari..)
C'est-y pas beau et intelligent?
NSString *stella=[NSString stringWithFormat:@%C %C %C, 9733,9733,9733];
NSLog(stella);