What is required to support the column autosize request for a view-based table? The docs are really unclear on this point, and seem to speak to cell-based views.
This is to handle a double click on a column separator.
I can make this work by implementing tableView:sizeToFitWidthOfColumn:
for an NSTableView
and outlineView:sizeToFitWidthOfColumn:
for an NSOutlineView
, but the docs say this is only necessary for large tables. Is there a more correct way to do this?
- (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;
}
I was wondering this same thing. If you do some digging in the assembly you’ll discover that the framework method responsible for the column autosizing functionality is -[NSTableView _sizeToFitWidthOfColumn:]
. Unfortunately, the first thing it does is check whether the table view is a view-based table view and, if so, it simply jumps to the end of the method and does absolutely nothing.
View-based table views were introduced in OS X 10.6 in 2009. Alas, five years later and it looks this functionality still hasn’t been reimplemented.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With