2014-02-21 20 views
4

需要什麼來支持基於視圖的表的表的列自動調整請求?這些文件在這一點上確實不清楚,似乎是以細胞爲基礎的觀點。如何自動調整基於視圖的NSTableView或NSOutlineView中的列

這是爲了處理在列分隔符上的雙擊。

我可以通過實施tableView:sizeToFitWidthOfColumn:用於爲NSOutlineView一個NSTableViewoutlineView:sizeToFitWidthOfColumn:使這項工作,但該文檔說,這是隻需要大表。有沒有更多的正確的方式來做到這一點?

- (CGFloat)tableView:(NSTableView*)tableView sizeToFitWidthOfColumn:(NSInteger)column { 
    NSUInteger n = [self numberOfRowsInTableView:tableView]; 
    CGFloat w = 30; 
    NSTableColumn* col = [[tableView tableColumns] objectAtIndex:column]; 
    for (int i=0; i<MIN(n, 100); ++i) { 
    NSView* vw = [self tableView:tableView viewForTableColumn:col row:i]; 
    w = MAX(w, [vw frame].size.width); 
    } 
    return w; 
} 

回答

2

我在想這件事。如果您在程序集中進行了一些挖掘,則會發現負責列自動調整功能的框架方法是-[NSTableView _sizeToFitWidthOfColumn:]。不幸的是,它所做的第一件事是檢查表視圖是否是一個基於視圖的表視圖,如果是這樣,它只是跳轉到方法的結尾並且什麼都不做。

2009年在OS X 10.6中引入了基於視圖的表格視圖。唉,五年後,看起來這個功能還沒有被重新實現。

相關問題