NSComboBox - Beschaffung ausgewählte Informationen und NSComboBoxDataSource
-
19-09-2019 - |
Frage
Für das Leben von mir, ich bin immer wieder wird mit NSComboBox
stapfte.
Ich habe ein Objekt, das das NSComboBoxDataSource
Protokoll entspricht, und implementiert:
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
habe ich die Instanz meiner NSComboBox
eine Datenquelle zu verwenden und dieses Objekt als Quelle eingestellt. Das funktioniert gut, meine Implementierung die Anzahl der Elemente zurückgibt, und gibt einen NSString
Wert für ein Element in bestimmten Indizes.
Dann habe ich entscheiden, was ich will, etwas tun, wenn etwas ausgewählt ist, das ist, wo meine Probleme beginnen. Es gibt keine offensichtliche Methode im NSComboBoxDataSource
Protokoll außer Kraft zu setzen, die Auswahl der Elemente in der Combo-Box zu handhaben.
Also, ich habe auch meine Aufgabe entspricht NSComboBoxDelegate
und implementieren:
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
Leider, im Gegensatz zu NSTableView
zur Auswahl, Objekt der Mitteilung der ist die NSComboBox
nicht Gegenstand des Elements ausgewählt. „Fein“ Ich sage mir, ich werde die NSComboBox
Methode aufrufen:
- (id)objectValueOfSelectedItem;
Dies sollte das Einzelteil zurück, der ausgewählt wird, und ich kann von dort aus gehen. Allerdings ist diese Methode nur aufgerufen werden, wenn usesDataSource
NO
gesetzt, was nicht mein Fall ist. Warnungen zu fliegen beginnen, wenn ich diese verwenden.
Also, meine Frage ist, was ist der richtige Weg, NSComboBox
Auswahlen zu handhaben, wenn Sie eine Datenquelle verwenden?
Lösung
Ich glaube, Sie wollen indexOfSelectedItem statt objectValueOfSelectedItem. Dann, da Sie die Datenquelle sind, sollten Sie in der Lage sein, eigene comboBox:objectValueForItemAtIndex:
Methode aufzurufen.