【问题标题】:NSTableView with custom NSColumnHeaderCell带有自定义 NSColumnHeaderCell 的 NSTableView
【发布时间】:2010-06-24 08:15:33
【问题描述】:

在我的应用程序中,我有一个 NSTableView,其中包含一个以编程方式分配的自定义标题单元格。分配自定义单元格的代码如下所示:

-(void)setupTableHeader:(id)table {
 NSArray *columns = [table tableColumns];
    NSEnumerator *cols = [columns objectEnumerator];
    NSTableColumn *col = nil;

    TRDarkTableColumnHeaderCell *iHeaderCell;

    while (col = [cols nextObject]) {
        iHeaderCell = [[TRDarkTableColumnHeaderCell alloc] initTextCell:[[col headerCell] stringValue]];
        [col setHeaderCell:iHeaderCell];
        [iHeaderCell release];
    }
}

这正如您所期望的那样工作。但是,当我的窗口调整大小并且 NSTableView 呈现其滚动条时,会使用默认的 NSTableHeaderCell 创建一个额外的标题单元格。为了尝试处理这个问题,我尝试设置一个通知以在窗口调整大小时触发。不幸的是,这没有效果(我的 setupTableHeader 函数仍然为表返回 1 列)

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setupTableHeaders) name:NSWindowDidResizeNotification object:[[NSApp delegate] window]];

请注意,我的通知调用了一个辅助函数 setupTableHeaders,它调用了上面提到的 setupTableHeader 函数。这是一个截图来说明这个问题:

alt text http://img22.imageshack.us/img22/640/headercell.png

【问题讨论】:

    标签: cocoa nstableview


    【解决方案1】:

    这是角落视图。试试:

    [table setCornerView:nil];

    如果您的列调整大小允许所有列的总宽度小于表格的宽度(暴露“空白”标题区域,则您可能还必须将表格的标题视图替换为绘制相同背景的自定义子类由默认标题单元格绘制)。

    【讨论】:

    • 按照建议,我还必须将表头视图子类化,但这非常有效。谢谢。
    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多