Domanda

ho un NSTableView di cui contiene una colonna NSPopUpButtonCellS. Questa colonna è assegnata a un IBOutlet. La classe del controller della mia applicazione crea un menu al suo interno init e lo assegna al NSTableColumnDatacell, 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?

È stato utile?

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 =/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top