首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSComboBox委托

NSComboBox委托
EN

Stack Overflow用户
提问于 2012-05-24 15:03:11
回答 1查看 960关注 0票数 2

我有一个带有数据源的NSComboBox,当您单击三角形并单击其中一个项目时,它工作得非常好。但是,我也希望它允许用户键入框来选择使用自动完成的名称。当前,当用户键入时,我希望选择的项自动完成,但不选择。

我的想法是,我应该实现一个委托方法,以便当用户在组合框中键入和选择项名自动完成时,剩下的组合框将运行该方法,然后从弹出列表中选择同名项。

我实现了这个委托方法:

代码语言:javascript
复制
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor {

    NSString *tempString = [outletPerformanceVenue stringValue];

    NSLog(@"New Value = %@",tempString);

    [outletPerformanceVenue selectItemWithObjectValue:tempString];

    return TRUE;
}

但是,我收到以下编译器错误:

代码语言:javascript
复制
*** -[NSComboBoxCell selectItemWithObjectValue:] should not be called when usesDataSource is set to YES

看起来很直截了当,但让我纳闷.选择项目的最佳方式是什么?是否应该在包含此名称的数据源数组中确定记录的索引,然后使用相同的索引选择组合框项?还是有更直接的方法?

*编辑 *

一个更简单、更直接的问题可能是:

如果用户输入(而不是从下拉列表中选择),则将项的名称输入组合框。在使用数据源时,如何从组合框中检索该项的索引?

雪上加霜的是,苹果公司的文档称,selectItemWithObjectValue:应该与内部或外部数据源一起工作。在此:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ComboBox/Tasks/SettingComboBoxValue.html

EN

回答 1

Stack Overflow用户

发布于 2013-04-22 12:40:13

简单回答:使用selectItemAtIndex方法,或者调用setStringValue: (NSComboBox从NSTextField继承),如果您真的想使用字符串的话。

为了完整起见:我来这里是因为一个相关但略有不同的问题。

我只想解释一下我是如何建造我的组合框的。我不确定这是否适用于你的情况,但我希望它能对某人有所帮助。

我实现了DataSource方法以使完成工作,但是让绑定来实际设置值。这样,按返回就可以自动完成一个选项的项目,或者在没有可用的自动完成时创建一个新的值。绑定只负责设置和获取值。

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

https://stackoverflow.com/questions/10740128

复制
相关文章

相似问题

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