在我的应用程序中,我有一个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
答案 0 :(得分:2)
这是角落视图。尝试:
[table setCornerView:nil];
如果列调整大小允许所有列的总宽度小于表的宽度(暴露“空白”标题区域),您可能还必须使用自定义子类替换表的标题视图,该子类绘制相同的背景由默认标题单元格绘制。)