2010-06-24 52 views
2

在我的應用程序中,我有一個帶有自定義標題單元格的NSTableView,它被編程分配。指定自定義單元格的代碼如下所示:帶自定義NSColumnHeaderCell的NSTableView

-(void)setupTableHeader:(id)table { 
NSArray *columns = [table tableColumns]; 
    NSEnumerator *cols = [columns objectEnumerator]; 
    NSTableColumn *col = nil; 

    TRDarkTableColumnHeaderCell *iHeaderCell; 

    while (col = [cols nextObject]) { 
     iHeaderCell = [[TRDarkTableColumnHeaderCell alloc] initTextCell:[[col headerCell] stringValue]]; 
     [col setHeaderCell:iHeaderCell]; 
     [iHeaderCell release]; 
    } 
} 

這可以像您期望的那樣工作。但是,當我調整窗口大小並且NSTableView呈現其滾動條時,會使用默認的NSTableHeaderCell創建額外的標題單元格。爲了嘗試處理這個問題,我試圖設置一個通知來調整窗口大小。不幸的是,這有沒有影響(我setupTableHeader功能仍然返回該表1列)

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setupTableHeaders) name:NSWindowDidResizeNotification object:[[NSApp delegate] window]]; 

請注意,我的通知調用一個輔助函數setupTableHeaders,這就要求上述setupTableHeader功能。下面是截圖來說明問題:

alt text http://img22.imageshack.us/img22/640/headercell.png

回答

2

這是角視圖。嘗試:

[table setCornerView:nil];

您也可以與繪製相同的背景自定義子類來代替表的標題視圖如果你的列大小調整允許所有列的總寬度小於表格的寬度(暴露由默認標題單元繪製的「空白」標題區域)。

+0

正如所建議的,我不得不繼承表頭視圖的子類,但這工作很好。謝謝。 – ndg 2010-06-25 10:52:38