Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何为NSCOMBOX启用不区分大小写的自动完成?_Objective C_Cocoa - Fatal编程技术网

Objective c 如何为NSCOMBOX启用不区分大小写的自动完成?

Objective c 如何为NSCOMBOX启用不区分大小写的自动完成?,objective-c,cocoa,Objective C,Cocoa,我已将NSCOMBOX绑定到interface builder中的数据源。 当我在NSComboBox中键入内容时,我正确地得到了自动完成建议 然而,自动完成是区分大小写的,这意味着如果角色使用了错误的大小写,我不会得到建议 如何为绑定到interface builder中的数据源的NSComboBox启用不区分大小写的自动完成功能 谢谢您应该在NSCOMBOX数据源中实现组合框:completedString:,例如: - (NSString *)comboBox:(NSComboBox *)

我已将NSCOMBOX绑定到interface builder中的数据源。 当我在NSComboBox中键入内容时,我正确地得到了自动完成建议

然而,自动完成是区分大小写的,这意味着如果角色使用了错误的大小写,我不会得到建议

如何为绑定到interface builder中的数据源的NSComboBox启用不区分大小写的自动完成功能


谢谢

您应该在NSCOMBOX数据源中实现
组合框:completedString:
,例如:

- (NSString *)comboBox:(NSComboBox *)comboBox completedString:(NSString *)partialString
{
    for (NSString dataString in dataSourceArray) {
        if ([[dataString commonPrefixWithString:partialString options:NSCaseInsensitiveSearch] length] == [commonPrefixWithString:partialString length]) {
            return testItem;
        }
    }
    return @"";
}

您可以将nscomboxCell子类化并重写[nscomboxCell completedString:]

- (NSString *)completedString:(NSString *)string
{
    NSString *result = nil;

    if (string == nil)
        return result;

    for (NSString *item in self.objectValues) {
        NSString *truncatedString = [item substringToIndex:MIN(item.length, string.length)];
        if ([truncatedString caseInsensitiveCompare:string] == NSOrderedSame) {
            result = item;
            break;
        }
    }

    return result;
}

但这意味着我不能在interface builder中指定数据源。对的我有许多字段,在interface builder中配置,以编程方式将它们绑定到数据源将是一项艰巨的工作。@patrik您需要支持绑定吗?(数据源的类型是什么)如果向组合框提供Cocoa绑定,则不必实现“必需的”数据源方法。只要NSComboBox有一个绑定的控制器,您也可以将组合框连接到数据源,并且该数据源只需要有comboBox:completedString“方法已实现。@iluvcapra-您是如何实现的?什么是绑定控制器?你能用一个例子写一个答案吗?提到的这个“completedString”方法从未被调用。如果我使用的是数组控制器呢?正如我在另一个问题中所评论的,self.objectValues是数据源吗?我已经将所有字段绑定到interface builder中的数据源,我有80个字段。我应该以编程方式填充它们,以便自定义自动完成?