如何将NSTableView单元格添加到单元格?

时间:2011-09-20 06:36:04

标签: xcode macos cocoa xcode4 nstableview

我有一个NSTableView,它在我的窗口上从一个边缘延伸到另一个边缘,但是桌子边缘的单元格中的数据确实需要一些填充。如果我在边缘留下一个阴沟,窗口看起来不太好,所以我想尝试在一些单元格中添加一些填充,这样数据就不会正好靠边缘。

我在Interface Builder或代码文档中找不到有关向单元格添加填充或插入内容的任何内容。

有什么建议吗?

3 个答案:

答案 0 :(得分:4)

您可以继承NSTextFieldCell并覆盖drawInteriorWithFrame:inView:方法以自定义绘制字符串。

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    NSRect titleRect = [self titleRectForBounds:cellFrame];
    NSAttributedString *aTitle = [self attributedStringValue];
    if ([aTitle length] > 0) {
        [aTitle drawInRect:titleRect];
    }
}

其中titleRectForBounds:添加一些空格

- (NSRect)titleRectForBounds:(NSRect)bounds
{
    NSRect titleRect = bounds;

    titleRect.origin.x += 5;
    titleRect.origin.y += 5;

    NSAttributedString *title = [self attributedStringValue];
    if (title) {
        titleRect.size = [title size];
    } else {
        titleRect.size = NSZeroSize;
    }

    // We don't want the width of the string going outside the cell's bounds
    CGFloat maxX = NSMaxX(bounds);
    CGFloat maxWidth = maxX - NSMinX(titleRect);
    if (maxWidth < 0) {
        maxWidth = 0;
    }

    titleRect.size.width = MIN(NSWidth(titleRect), maxWidth);

    return titleRect;
}

http://comelearncocoawithme.blogspot.com/2011/09/custom-cells-in-nstableview-part-1.html

有一个更完整的例子

答案 1 :(得分:0)

简单方法:在文字字符串之前添加空格。 更好的方法:在您的单元格中嵌入一个视图,并将所有其他UI对象放在其中。

答案 2 :(得分:-1)

在你的cellforrowAtIndexPath中你需要实现它。

cell.textLabel.text = [NSString stringWithFormat:@“%@”,sometext];

或者 为它添加标签和设置框架。然后将其添加到单元格