6

我有一个大纲视图,我不想缩进顶部的几个级别(无论如何它们都有独特的外观),但我确实想缩进后续级别。我怎样才能做到这一点?

我尝试过覆盖-levelForRow:-levelForItem:从返回值中减去 2,但这没有帮助。我还尝试覆盖-frameOfOutlineCellAtRow:从框架的宽度中减去 2 * indentationPerLevel,但这也没有帮助,可能是因为我没有显示三角形。关于如何解决此问题的任何想法?

大纲视图绑定到NSTreeController,这使得扁平化底层数据结构变得困难,但我确实设置了大纲视图委托。

4

1 回答 1

8

解决方案是使用frameOfCellAtColumn:row:which 是一种NSTableView方法。

- (NSRect)frameOfCellAtColumn:(NSInteger)column row:(NSInteger)row;
{
    NSRect frame = [super frameOfCellAtColumn:column row:row];

    if (column == (NSInteger)[self.tableColumns indexOfObjectIdenticalTo:self.outlineTableColumn]) {
        if (this-item-or-row-matches-your-conditions) {
            frame.origin.x -= self.indentationPerLevel;
            frame.size.width += self.indentationPerLevel;
        }
    }

    return frame;
}

此方法控制基于单元格和基于视图的表格视图和大纲视图中的布局。

于 2015-03-20T00:43:02.473 回答