2012-03-31 45 views
0

我已經正確設置了一個NSOutlineView及其數據源並且工作良好。NSOutlineView + DataSource正確設置。如何添加ImageAndTextCell?

它實際上是一個基本的文件資源管理器,顯示特定路徑(文件夾,子文件夾等)的文件夾結構。子文件夾按需加載(出於速度原因,文件夾項僅在展開時加載其內容)。

我想是要知道如何我可以輕鬆地添加支持,我已經爲ImageAndTextCell類,這樣我可以把例如每個條目旁邊的文件夾/文件圖標...

任何幫助表示讚賞。 (請不要將我指向文檔;我已經學習了幾乎所有的東西;我需要的是某些已經完成的建議,以便我只添加到現有的代碼中;而不必從頭開始重寫或完全更改邏輯......)

感謝

這裏的*My Code *(我遇到了一些麻煩格式化爲SO ...所以我張貼在Snippet.MX


做了什麼建議和所有的大綱查看項目的名稱突然不出現...

enter image description here

+0

你能幫助我解決問題,這是帖子http://stackoverflow.com/questions/24993443/how-to-reload-an-nsoutlineview – akk 2014-07-28 14:09:39

+0

我遵循相同的代碼,我不能刷新它。一旦它工作,它會很好。 – akk 2014-07-28 14:10:10

回答

1

文檔是你的朋友,但我知道有時候是如此之大。

BTW 您需要爲您的大綱視圖設置ImageAndTextCell,您可以在窗口控制器init或awakeFromNib方法上或直接(如果需要)在您的NSOutlineView子類上執行此操作。

我的項目我有一個NSOutlineView子如下圖所示

// myOutlineView subclass 

- (void)awakeFromNib { 
    self.imageCell = [[ImageAndTextCell alloc] init]; 
    [self.imageCell setEditable: NO]; 
    NSTableColumn* leftColumn = [[self tableColumns] objectAtIndex:0]; 
    [leftColumn setDataCell: self.imageCell]; 
} 

然後,您需要,您可以設置您的具體行的影像來實現willDisplayCell委託方法如下所示(文件夾圖標,文件圖標TXT ,jpg圖標)。

在代碼如下所示,我從我的單身VDIconUtils得到它,但你可以簡單地返回一個NSImage中

- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item { 
    [cell setDrawsBackground:NO]; 
    if ([[tableColumn identifier] isEqualToString:@"mycellname"]) { 
     [cell setImage:[[VDIconUtils sharedIconUtils] iconForFolderStatus:fs :16 :[outlineView isItemExpanded:item]]]; 
    } 

} 
+0

完全按照你的建議做了什麼(雖然我以前也嘗試過),但沒有任何反應......除了大綱視圖項目標題突然沒有出現......任何想法? – 2012-03-31 15:11:00

+0

OMG ...我做到了。怎麼樣?而不是'[cell setImage:]',它必須是'[cell setImage:size:]'。非常愚蠢的是,花了很多時間在那... – 2012-03-31 15:16:59