2014-02-14 69 views
0

顯示重複的項目我有5列的NSTableView的。其中一列有NSComboBoxCell。組合框用來自目錄的一種類型的文件(例如jpg)的名稱填充。我按字母順序將文件名保存在NSArray中。我填充文件名的陣列組合框單元如下:NSComboBox到不同的顏色

[assayCell addItemsWithObjectValues:(NSArray *)fileNameArray]; 

此前曾有隻有一種類型的文件,但現在同一個目錄中有多種類型的同名文件如的。 image1.jpg和image1.png。我想在組合框中填充沒有擴展名的文件名。具有不同擴展名的文件將以不同的顏色顯示,例如。 jpg文件將以黑色顯示,而png將以綠色顯示。

我是比較新的可可/ OBJ - C的,所以我沒有找到一個合適的方式來實現這一目標。如何保持數組中的重複項?我應該使用NSDictionary存儲文件的名稱及其擴展名,然後製作字典數組。在那種情況下,我將如何對陣列進行排序?

請提出一個解決辦法...

問候 Abhijeet

+1

使用的NSMutableArray。 –

+0

謝謝!唯一值得懷疑的是,我可以用與排序NSString數組相同的方式對NSDictionary數組進行排序。我排序NSString的爲一體的陣列:NSArray的* sortedArray = [assayNameList sortedArrayUsingSelector:@selector(比較:)]; – Abhijeet

回答

1

確定使用的顏色取決於你如何存儲的文件擴展名。如果它們是文件名的一部分(即「image1.jpg」),則必須將它們分開。如果他們已經分開了(就像你提到的,在一個有兩個kvps的字典中),那麼我想你很好。

應用可以使用NSAttributedString實現的顏色:的NSMutableDictionary或等效的

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

謝謝!唯一的問題是因爲文件名沒有擴展名,所以在組合框項目選擇時我該如何識別文件的類型。我應該檢索所選項目的顏色並使用它來標識文件的類型?可能嗎? – Abhijeet

+1

那麼在理論上,你可以這樣做,但它可能會變成雜亂,如果您稍後決定更改配色方案,你將不得不更改文件類型識別碼等也容易出錯,即...我建議始終保持一個文件名和相應的擴展名列表,並在其上繪製UI列表。 – insys

+0

請確保你接受一個答案,如果它對你有幫助。通過這種方式,它不會顯示爲未答覆,並且您將增加獲得未來回答問題的機會。 – insys