首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSComboBox -获取选定信息和NSComboBoxDataSource

NSComboBox -获取选定信息和NSComboBoxDataSource
EN

Stack Overflow用户
提问于 2009-11-11 09:57:51
回答 1查看 9.6K关注 0票数 4

在我的一生中,我总是被NSComboBox难住。

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

代码语言:javascript
复制
- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;

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

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

因此,我还让我的对象符合NSComboBoxDelegate并实现:

代码语言:javascript
复制
- (void)comboBoxSelectionDidChange:(NSNotification *)notification;

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

代码语言:javascript
复制
- (id)objectValueOfSelectedItem;

这应该会返回被选中的项目,我可以从那里开始。但是,只有当usesDataSource设置为NO时才会调用该方法,而我的情况并非如此。当我使用这个的时候,警告开始飞来飞去。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-11-11 10:22:01

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

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1712515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档