[Résolu] PopMenu dans une custom NSTableViewCell

berfisberfis Membre
janvier 2014 modifié dans API AppKit #1

Bonjour,


 


J'ai un petit souci agaçant: je n'arrive pas à  fourrer le bon menu dans un NSPopupButton qui se trouve sur une NSTableViewCell dérivée. A chaque fois il me sort les "item1, item2, item3" du menu par défaut.


 


Comment binder/flanquer le bon menu (toujours le même, stocké quelque part) dans chacune des instances de ce PopUpButton?


 


D'avance merci!


Réponses

  • Sombre, sombre crétin  :s . La cellule est instanciée dans le nib, pas par code. C'est dans le awakeFromNib qu'il faut fixer le menu, pas dans l'init.


     


    C'est bon, cessez de rigoler bêtement. <_<


  • Je me permets de réouvrir ce post car j'ai un problème similaire.


     


    Je me fais mon propre NSLevelIndicator. Pour ça, je sous-classe NSLevelIndicator et NSLevelIndicatorCell. Dans mes cells, je dessine soit une étoile, soit un point.


     


    Maintenant, j'aimerais ajouter un PopupMenu sur ce contrôle. Dans la méthode AwakeFromNib de ma sous-classe de NSLevelIndicator, j'ajoute le code suivant :



    NSMenu *_menu = [[NSMenu alloc] init];

    NSMenuItem *item1 = [[NSMenuItem alloc] initWithTitle:@Action 1 action:nil keyEquivalent:@""];
    NSMenuItem *item2 = [[NSMenuItem alloc] initWithTitle:@Action 2 action:nil keyEquivalent:@""];
    NSMenuItem *item3 = [[NSMenuItem alloc] initWithTitle:@Action 3 action:nil keyEquivalent:@""];
    [_menu addItem:item1];
    [_menu addItem:item2];
    [_menu addItem:item3];
    [self setMenu:_menu];


    Mais rien ne se passe. J'ai beau faire des clic-droit sur mon contrôle, aucun menu à  l'horizon. Par contre, si je créé un menu dans mon xib et que je le lie à  l'outlet "Menu" de mon contrôle qui sous-classe NSLevelIndicator, là  ça fonctionne !!!


     


    Une idée ?

  • berfisberfis Membre
    janvier 2014 modifié #4

    Chez moi cela fonctionne (tes lignes de code dans le initWithFrame d'une de mes custom views), sauf que bien sûr les commandes sont désactivées puisqu'elles n'ont pas d'action définie.


     


    _menu est une variable locale ou une propriété de ton NSLevelIndicator? (tu emploies le _ comme si c'était une propriété, mais tu la redéclares en local)


     


    Sur ce fragment de code, on ne voit pas trop où tout ça se passe dans l'application. Tu dis sous-classer NSLevelIndicator et NSLevelIndicatorCell. SetMenu est une méthode de NSView, j'espère que ce que l'on voit est le awakeFromNib du NSLevelIndicator (NSView) et pas NSLevelIndicatorCell (NSCell).




  • Chez moi cela fonctionne (tes lignes de code dans le initWithFrame d'une de mes custom views), sauf que bien sûr les commandes sont désactivées puisqu'elles n'ont pas d'action définie.


     


    _menu est une variable locale ou une propriété de ton NSLevelIndicator? (tu emploies le _ comme si c'était une propriété, mais tu la redéclares en local)


     


    Sur ce fragment de code, on ne voit pas trop où tout ça se passe dans l'application. Tu dis sous-classer NSLevelIndicator et NSLevelIndicatorCell. SetMenu est une méthode de NSView, j'espère que ce que l'on voit est le awakeFromNib du NSLevelIndicator (NSView) et pas NSLevelIndicatorCell (NSCell).




     


    J'ai essayé de faire la même chose sur une custom view et ça fonctionne, en effet (menu déclaré dans le initWithFrame).


     


    Dans le code que j'ai copié plus haut, _menu est une variable locale. Mais j'ai aussi testé en en faisant une propriété de mon NSLevelIndicator "custom" (d'ou le nom préfixé d'un _).


     


    Mon fragment de code se trouve bien dans la méthode awakeFromNib du mon NSLevelIndicator "custom".

Connectez-vous ou Inscrivez-vous pour répondre.