【发布时间】: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