Question

J'ai un NSTableView dont une colonne contient NSPopUpButtonCells.Cette colonne est affectée à un IBOutlet.La classe de contrôleur de mon application crée un menu dans son init et l'assigne au dataCell du NSTableColumn, qui est le NSPopUpButtonCell.

Le menu se présente comme suit:

NSPopUpButton
    NSMenu
        NSMenuItem item1
        NSMenuItem item2
        NSMenuItem item3
            NSMenu
                NSMenuItem item3_1
                NSMenuItem item3_2
        NSMenuItem item4
                NSMenuItem item4_1
                NSMenuItem item4_2
                NSMenuItem item4_3

Lorsque je clique sur le menu et que je choisis item1 ou item2, le tableView:setObjectValue:forTableColumn:row: de ma source de données est déclenché et objectValue est 0 ou 1, l'index de l'élément choisi. Cependant, lorsque je choisis un élément dans l'un des sous-menus, la valeur objectValue que j'obtiens est -1.Comment pourrais-je obtenir l'élément de menu qui a été choisi?

Était-ce utile?

La solution

Je ne pense pas que je me fierais à -tableView: setObjectValue: forTableColumn: row: lorsque vous avez un ensemble complexe de menus et de sous-menus;si je me souviens bien, il n'y a pas vraiment de `` valeur d'objet '' au mappage des éléments de menu lorsque les sous-menus entrent en jeu - NSMenu est trop ancien pour utiliser NSIndexPath comme vous pourriez l'espérer, et n'est pas assez complexe pour essayer de mapper des entiers sur des menuset sous-menus.(De plus, les menus ont tendance à changer beaucoup de manière dynamique, donc la signification de "3" serait assez irrégulière.)

Définissez une cible et une action sur vos NSMenuItems (ou peut-être simplement sur les NSMenus parents) pour faire quelque chose de fiable lorsque chacun est sélectionné.

Autres conseils

Utilisez-vous le même code que vous pour récupérer les éléments 1 et 2?Je suppose que oui, mais parfois ces choses sont facilement négligées= /

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top