Nspopupbuttoncell con menu gerarchico in nstableview
-
28-10-2019 - |
Domanda
ho un NSTableView
di cui contiene una colonna NSPopUpButtonCell
S. Questa colonna è assegnata a un IBOutlet
. La classe del controller della mia applicazione crea un menu al suo interno init
e lo assegna al NSTableColumn
Datacell, che è il NSPopUpButtonCell
.
Il menu sembra segue:
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
Quando faccio clic sul menu e scelgo elemento1 o elemento2, la mia fonte di dati tableView:setObjectValue:forTableColumn:row:
viene sparato e l'oggetto è 0 o 1, l'indice dell'articolo scelto. Tuttavia, quando scelgo un oggetto da uno dei sottomeni, l'oggetto che ottengo è -1. Come potrei ottenere la voce di menu che è stata scelta?
Soluzione
Non credo che farei affidamento su -TableView: setObjectValue: FortableColumn: riga: quando hai un insieme complesso di menu e sottomeni; Se ricordo bene non c'è davvero un "valore dell'oggetto" per la mappatura delle voci di menu quando entrano in gioco i sottomeni - NsMenu è troppo vecchio per usare NsIndexPath come potresti sperare e non è abbastanza complesso da provare a mappare i numeri interi ai menu e sottomeno. (Inoltre, i menu tendono a cambiare molto in modo dinamico, quindi il significato di "3" sarebbe piuttosto agitato.)
Imposta un target e un'azione sui tuoi nsmenuuiteem (o forse solo il genitore nsmenus) per fare qualcosa di affidabile quando ciascuno è selezionato.
Altri suggerimenti
Stai usando lo stesso codice per recuperare l'articolo 1 e 2? Suppongo che lo sia, ma a volte queste cose sono facilmente trascurate =/