【问题标题】:How to autosize columns in a view-based NSTableView or NSOutlineView如何在基于视图的 NSTableView 或 NSOutlineView 中自动调整列的大小
【发布时间】:2014-02-21 19:02:43
【问题描述】:

支持基于视图表的列自动调整大小请求需要什么?文档在这一点上确实不清楚,并且似乎在谈论基于单元格的视图。

这是为了处理对列分隔符的双击。

我可以通过为NSTableViewoutlineView:sizeToFitWidthOfColumn:NSOutlineView 实现tableView: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;
}

【问题讨论】:

    标签: objective-c cocoa nstableview nsoutlineview


    【解决方案1】:

    我也在想同样的事情。如果您在程序集中进行一些挖掘,您会发现负责列自动调整大小功能的框架方法是-[NSTableView _sizeToFitWidthOfColumn:]。不幸的是,它做的第一件事就是检查表视图是否是基于视图的表视图,如果是,它只是跳转到方法的末尾并且什么也不做。

    基于视图的表格视图于 2009 年在 OS X 10.6 中引入。唉,五年过去了,看起来这个功能仍然没有被重新实现。

    【讨论】:

      猜你喜欢
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 2015-06-25
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多