NSComboBox - 获取所选信息和NSComboBoxDataSource

Mar*_*ell 4 macos cocoa objective-c nscombobox

对于我的生活,我一直被困扰着NSComboBox.

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

- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
Run Code Online (Sandbox Code Playgroud)

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

然后我决定在选择某些东西时我想做点什么,这就是我的问题开始的地方.在NSComboBoxDataSource协议中没有明显的方法可以覆盖组合框中的项目选择.

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

- (void)comboBoxSelectionDidChange:(NSNotification *)notification;
Run Code Online (Sandbox Code Playgroud)

不幸的是,与NSTableView选择不同,通知的对象NSComboBox不是所选项目的对象."很好"我告诉自己,我会称之为NSComboBox方法:

- (id)objectValueOfSelectedItem;
Run Code Online (Sandbox Code Playgroud)

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

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

nal*_*all 15

我想你想要indexOfSelectedItem而不是objectValueOfSelectedItem.然后,由于您是数据源,因此您应该可以调用自己的comboBox:objectValueForItemAtIndex:方法.