[NSButtonCell] Gestion dynamique

13:39 modifié dans API AppKit #1
Bonjour,

j'ai une interrogation avec les objets NSButtonCell (que ce soit dans une TableView ou une OutlineView).
Comment initialiser l'image ainsi que le texte via la méthode delegate tableView:objectValueForTableColumn:row ?

Dans le cas d'une cellule standard, on retourne une NSString. Dans celui d'une cellule de type image, on retourne un objet NSImage. En suivant cette logique, j'ai donc tenté de retourné un NSButton. Pour ceci, j'ai fait ce code pour le test:
====================================================================================
† NSButton *button;
† button = NSButton alloc] init];<br />† [button setTitle:@&quot;TEST&quot;;<br />† [button setImage:[NSImage imageNamed:@&quot;MonImage&quot;;

† return button;
====================================================================================
Mais j'ai comme résultat les boutons vides† :(

Remarque: j'arrive au résultat voulu gr‚ce à la méthode tableView:willDisplayCell:forColumn:row† en affectant l'image et le titre de la cellule. †Mais je ne trouve pas cohérent de faire de cette façon pour un NSButtonCell et d'une autre pour les autres types de cellules.

Si quelqu'un a une idée  ;)

Réponses

  • 13:39 modifié #2
    C'est bien par le tableView:WillDisplayCell:... qu'il faut passer. La raison est simple: pour un bouton en voulant changer le titre ou une image, c'est simplement l'apparence du bouton que tu changes, l'information importante étant l'état du bouton (pressé ou non), alors que dans le cas des autres types de cellules, c'est bien la valeur contenue dans la source que tu changes. Pour les popup menus, de nouveau l'important est l'index de de l'élément sélectionné et non le menu.

    Si je me souviens bien dans le tableView:objectValue:For... tu dois en fait renvoyer un NSNumber qui vaut 0 pour un bouton désactivé et autre chose pour un état activé.
Connectez-vous ou Inscrivez-vous pour répondre.