4

对于我的一生,我一直被难住NSComboBox

我创建了一个符合NSComboBoxDataSource协议的对象,并实现了:

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

我将 my 的实例设置NSComboBox为使用数据源,并将此对象设置为源。这很好用,我的实现返回项目的数量,并返回NSString特定索引处的项目的值。

然后我决定在选择某事时我想做某事,这就是我的问题开始的地方。协议中没有明显的方法可以覆盖NSComboBoxDataSource来处理组合框中项目的选择。

所以,我也让我的对象符合NSComboBoxDelegate并实现:

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

不幸的是,与NSTableView选择不同,通知的对象NSComboBox不是所选项目的对象。“好”我告诉自己,我会调用NSComboBox方法:

- (id)objectValueOfSelectedItem;

这应该返回被选中的项目,我可以从那里开始。usesDataSource但是,只有在设置为时才调用该方法NO,这不是我的情况。当我使用它时,警告开始出现。

所以,我的问题是,NSComboBox当您使用数据源时,处理选择的正确方法是什么?

4

1 回答 1

15

我认为您想要indexOfSelectedItem而不是 objectValueOfSelectedItem。然后,由于您是数据源,您应该能够调用自己的comboBox:objectValueForItemAtIndex:方法。

于 2009-11-11T02:22:00.637 回答