NSComboBox - ottenere informazioni e NSComboBoxDataSource selezionate
-
19-09-2019 - |
Domanda
Per la vita di me, mi viene continuamente stumped con NSComboBox
.
ho creato un oggetto che è conforme al protocollo NSComboBoxDataSource
, e implementato:
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
ho impostato l'istanza di mia NSComboBox
di utilizzare una fonte di dati, e impostare questo oggetto come la fonte. Che le grandi opere, la mia applicazione restituisce il numero di elementi, e restituisce un valore NSString
per un articolo a indici specifici.
Poi decido che voglio fare qualcosa quando si seleziona qualcosa, questo è dove iniziano i miei problemi. Non esiste un metodo evidente per ignorare nel protocollo NSComboBoxDataSource
per gestire la selezione di elementi nella casella combinata.
Così, ho anche il mio oggetto conforme alle NSComboBoxDelegate
e implementare:
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
Purtroppo, a differenza NSTableView
sulla selezione, oggetto della comunicazione è il non NSComboBox
l'oggetto della voce selezionata. "Bene" mi dico, che chiamerò il metodo NSComboBox
:
- (id)objectValueOfSelectedItem;
Questo dovrebbe restituire l'articolo selezionato e posso passare da lì. Tuttavia, tale metodo deve essere chiamato solo quando usesDataSource
è impostato su NO
, che non è il mio caso. Avvertenze iniziano a volare quando uso questo.
Quindi, la mia domanda è, qual è il modo corretto di gestire le selezioni NSComboBox
quando si utilizza una sorgente di dati?
Soluzione
Penso che si desidera indexOfSelectedItem invece di objectValueOfSelectedItem. Allora visto che sei l'origine dei dati si dovrebbe essere in grado di chiamare il proprio metodo comboBox:objectValueForItemAtIndex:
.