2011-01-21 42 views
0

我可能會問非常簡單的問題,但我不能夠得到如何擺脫這一點, 的要求是,NSTableView的顯示圖像中的一個細胞

  1. 表應顯示圖像和明年一些文本對此。爲此,我在表格中添加了兩列
  2. NSTableView應該是透明的。爲了做到這一點,我做了一個CustomNSTableView類,裏面重寫drawRect方法,以便不繪製背景,並告訴單元格不要drawBackground。
  3. 現在,下一個障礙是如何顯示的圖像時,我不得不重寫/處理以下方法

- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{ 

    NSImage *pCellImage = // Get a valid Image ; 

    if(tableColumn == nil) return nil; 

    NSString *colName = [tableColumn identifier]; 
    if([colName isEqualToString:@"firstColumn"]){ 
     NSCell *pCell = [[NSCell alloc]initImageCell:pCellImage]; 
     return pCell; 
    }else{ 
     NSCell *pCell = [[NSCell alloc]initTextCell:@"Some text"]; 
     return pCell; 

    } 
} 

我添加的TableColumn ==零條件,如文檔中其給定,第一時間爲每一行,這將是與TableColumn的零調用時我需要設置用於整行一列,但如果我有評論BAD_ACCESS返回它的崩潰,

現在我的問題是如何處理零條件, 此外,在此功能設置的NSCell兩個欄後它去到另一個委託功能

- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 

我相信,經過設置數據集正常我並不需要使用此功能,

用下面的執行情況的崩潰,但我無法弄清楚,什麼是錯的,

我設置適當的數據源和委託,

+0

很奇怪,如果我評論setRowHeight那麼它不會擊中EXE_BAD_ACCESS :( – Amitg2k12 2011-01-21 13:04:47

回答

1

您是否嘗試過調用setBackgroundColor並傳遞清晰的顏色?

[myTableView setBackgroundColor:[[NSColor clearColor]]; 

如果使用此方法,請記住告訴周圍的NSScrollView不要繪製它的背景。

或者,考慮將表背景設置爲CALayer

關於將圖像和文本繪製在單個列中,Apple的開發者關係已經發布了一個自定義NSCell,ImageAndTextCell。您可以將此單元格與NSTableView和NSOutlineView實例一起使用。此自定義單元格處理在單個列中繪製圖像和文本。