NSTableView上不存在多个单元格

时间:2015-01-01 14:56:40

标签: macos cocoa nstableview nstableviewcell

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

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

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

enter image description here

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

这是正常的吗?如何摆脱那些"幻像细胞"?

2 个答案:

答案 0 :(得分:1)

你不能删除那些“幽灵”细胞。这就是表格视图的工作方式

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

答案 1 :(得分:1)

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

enter image description here

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

// 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];
}

将两者结合起来会产生以下效果(我使用交替的行颜色来表示为系统添加的填充填充确实 行)。

enter image description here