2009-11-11 19 views
4

對於我的生活,我一直在與NSComboBox難以抗拒。NSComboBox - 獲取選定的信息和NSComboBoxDataSource

我創建一個符合所述NSComboBoxDataSource協議的對象,並且執行:

- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox; 
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index; 

設置我NSComboBox的實例以使用一個數據源,並將此對象作爲源。這很好,我的實現返回項目的數量,併爲特定索引處的項目返回NSString值。

然後我決定,當我選擇某件事情時,我想做點什麼,這是我的問題開始的地方。在NSComboBoxDataSource協議中沒有明顯的方法來處理組合框中項目的選擇。

所以,我也有我的對象符合NSComboBoxDelegate和實施:

- (void)comboBoxSelectionDidChange:(NSNotification *)notification; 

不幸的是,不像NSTableView上的選擇,通知的對象是所選項目的NSComboBox不是對象。 「微調」我告訴自己,我會打電話給NSComboBox方法:

- (id)objectValueOfSelectedItem; 

這應返回所選的項目,我可以從那裏。但是,只有當usesDataSource設置爲NO時纔會調用該方法,但這不是我的情況。當我使用這個時,警告開始飛行。

所以,我的問題是,當您使用數據源時,處理NSComboBox選擇的正確方法是什麼?

回答

15

我想你想要indexOfSelectedItem而不是objectValueOfSelectedItem。然後,由於您是數據源,您應該可以調用您自己的comboBox:objectValueForItemAtIndex:方法。