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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top