NSComboBox以不同颜色显示重复项目

时间:2014-02-14 07:43:40

标签: objective-c macos cocoa

我有一个包含5列的NSTableView。其中一个列有NSComboBoxCell。组合框中填充了目录中一种类型(例如jpg)的文件名。我按字母顺序将文件名保存在NSArray中。我使用文件名数组填充组合框单元格,如下所示:

[assayCell addItemsWithObjectValues:(NSArray *)fileNameArray];

之前只有一种类型的文件,但现在同一目录有多种类型的文件具有相同的名称,例如。 image1.jpg和image1.png。我想在组合框中填充没有扩展名的文件名。具有不同扩展名的文件将以不同的颜色显示,例如。 jpg文件为黑色,png为绿色。

我对cocoa / Obj-C比较陌生,所以我找不到合适的方法来实现这个目标。如何在数组中保留重复项?我应该使用NSDictionary来存储文件名及其扩展名,然后创建字典数组。在那种情况下,我将如何排序我的数组?

请提出解决方案......

此致 Abhijeet

1 个答案:

答案 0 :(得分:1)

确定要使用的颜色取决于您存储文件扩展名的方式。如果它们是文件名的一部分(即“image1.jpg”),则必须将它们分开。如果它们已经是分开的(就像你提到的那样,在一个有两个kvps的词典中)那么我猜你很好。

使用NSAttributedString:

可以实现颜色
NSMutableAttributedString *astr = [[NSMutableAttributedString alloc] initWithString:@"Hello!"];
    [astr addAttribute:NSForegroundColorAttributeName
                 value:[NSColor redColor]
                 range:NSMakeRange(0, astr.length)];
    [assayCell addItemWithObjectValue:astr];