【发布时间】:2012-05-24 15:03:11
【问题描述】:
我有一个带有数据源的 NSComboBox,当您单击三角形并通过单击它来选择其中一项时,它可以完美运行。但是,我还希望它允许用户在框中键入以使用自动完成来选择名称。目前,当用户键入时,我希望选择的项目会自动完成,但不会选择。
我的想法是我应该实现一个委托方法,以便当用户在组合框中键入并且选择项名称自动完成时,离开组合框将运行该方法,然后从弹出窗口中选择同名的项目列表。
我实现了这个委托方法:
- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor {
NSString *tempString = [outletPerformanceVenue stringValue];
NSLog(@"New Value = %@",tempString);
[outletPerformanceVenue selectItemWithObjectValue:tempString];
return TRUE;
}
但是,我收到以下编译器错误:
*** -[NSComboBoxCell selectItemWithObjectValue:] should not be called when usesDataSource is set to YES
看起来很简单,但让我想知道......选择项目的最佳方法是什么?我是否应该确定包含此名称的数据源数组中记录的索引,然后使用相同的索引选择组合框项?还是有更直接的方法?
* 编辑 *
一个更简单更直接的问题可能是:
如果用户在组合框中输入(而不是从下拉列表中选择)项目的名称。使用数据源时如何从组合框中检索该项目的索引?
为了雪上加霜,Apple 的文档说 selectItemWithObjectValue: 应该与内部或外部数据源一起工作......这里:
【问题讨论】:
-
你有没有幸运地弄清楚这一点?
标签: datasource delegation nscombobox