我有一个带有数据源的 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: 应该与内部或外部数据源一起使用......在这里: