Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 带有自定义NSColumnHeaderCell的NSTableView_Cocoa_Nstableview - Fatal编程技术网

Cocoa 带有自定义NSColumnHeaderCell的NSTableView

Cocoa 带有自定义NSColumnHeaderCell的NSTableView,cocoa,nstableview,Cocoa,Nstableview,在我的应用程序中,我有一个NSTableView,其中有一个自定义的头单元格,是通过编程分配的。分配自定义单元格的代码如下所示: -(void)setupTableHeader:(id)table { NSArray *columns = [table tableColumns]; NSEnumerator *cols = [columns objectEnumerator]; NSTableColumn *col = nil; TRDarkTableColumnHe

在我的应用程序中,我有一个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创建一个附加的标题单元格。为了尝试处理这个问题,我尝试设置一个通知,以便在调整窗口大小时触发。不幸的是,这没有效果(my setupTableHeader函数仍然为表返回1列)

请注意,我的通知调用了一个helper函数setupTableHeaders,该函数调用上述setupTableHeader函数。下面是一个屏幕截图来说明这个问题:


这是角视图。尝试:

[表setCornerView:nil]


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

如建议,我还必须对表标题视图进行子类化,但这起作用非常好。非常感谢。
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(setupTableHeaders) name:NSWindowDidResizeNotification object:[[NSApp delegate] window]];