0

我有一个带有 3 个单元格的 NSTableView。我已经使用以下代码调整了该表视图以显示分隔符:

  [self.tableView setGridColor:[NSColor lightGrayColor]];
  [self.tableView setIntercellSpacing:NSMakeSize(1, 1)];
  [self.tableView setGridStyleMask:NSTableViewDashedHorizontalGridLineMask];

当我渲染表格时,我看到了:

在此处输入图像描述

该表显示了许多不应该存在且大小不同的单元格!

这是正常的吗?如何摆脱那些“幻影细胞”?

4

2 回答 2

1

您无法删除那些“幻影”单元格。这就是表格视图的工作方式

如果这是不可接受的,请查看NSStackViewNSCollectionView作为垂直堆叠单元格的方式(必须将其创建为自定义视图)。它们在呈现方面更加灵活。

于 2015-01-01T16:28:49.463 回答
1

如果表中所有内容行的大小相同,则可以使用NSTableView大小检查器来指定大小。如果这样做,系统添加的“填充”行也将具有此大小。

在此处输入图像描述

为了摆脱与系统添加的行相关的网格线,下面的片段在一个非常快速的演示应用程序中为我工作(这个片段不是我自己的,它取自另一个 Stackoverflow 问题的答案)

// MyNSTableView.m (only need to override this one NSTableView method)

- (void)drawGridInClipRect:(NSRect)clipRect
{
    NSRect lastRowRect = [self rectOfRow:[self numberOfRows]-1];
    NSRect myClipRect = NSMakeRect(0, 0, lastRowRect.size.width, NSMaxY(lastRowRect));
    NSRect finalClipRect = NSIntersectionRect(clipRect, myClipRect);
    [super drawGridInClipRect:finalClipRect];
}

将两者结合会产生以下效果(我使用交替的行颜色来显示系统添加的填充行确实没有绘制网格线)。

在此处输入图像描述

于 2015-01-01T20:59:33.077 回答