3

我需要实现一个headerview具有特定大小和渐变的。我必须在 . 的某些单元格中插入图像。尝试使用以下代码headerview创建单元格headerview,但我无法自定义headerview.

[[tableColumn headerCell] setImage:[NSImage imageNamed:@"sampleHeader"]];

如果我使用重写的 headerview 子类,我无法查看标题单元格中的图像或文本。请为我提供解决此问题的任何指示。

 

我可以通过子类化来插入图像和文本。NSTableHeaderCell如何增加高度NSTableHeaderView


如果我同时继承NSTableHeaderViewNSTableHeaderCell,则无法查看 headercell 中的任何内容。我使用以下代码设置 headerview 和 headercell

[tableView setHeaderView:CustomHeaderView];

[tableColumn setHeaderCell:[[[CustomHeaderTableCell alloc] initImageCell: [NSImage imageNamed:@"sample"]]autorelease]];

我有以下网址中给出的相同问题

http://lists.apple.com/archives/cocoa-dev/2002/Jun/msg00331.html

4

3 回答 3

13

你不需要继承 NSTableHeaderView。

我能够使用控制器类中的以下代码段来更改标题视图的高度:

-(void)awakeFromNib {
    NSRect frame = tableView.headerView.frame;
    frame.size.height = 26;
    tableView.headerView.frame = frame;
}

应该注意的是,滚动视图负责布局。它会根据需要自动更改 headerView 的框架,但保持高度不变。不需要按照其他答案中的建议调整剪辑视图等的大小。

于 2013-02-05T10:00:09.200 回答
2

您还可以创建一个NSTableHeaderView对象,使用框架(具有高度和宽度的矩形)对其进行初始化,并将该NSTableHeaderView对象设置为您的表格视图。

 NSTableHeaderView *tableHeaderView = [[NSTableHeaderView alloc] initWithFrame:NSMakeRect(0, 0, 120, 60)];
    [myTableView setHeaderView:tableHeaderView];
[tableHeaderView release];
于 2014-06-05T05:42:32.610 回答
1

以下链接帮助我解决了这个问题。

http://lists.apple.com/archives/cocoa-dev/2003/Feb/msg00676.html

您需要设置 Frame NSClipViewNSTableHeaderViewCornerView 就是我在代码中实现相同的方式。

for(NSView * subview in [topScrollView subviews])
{           
   for(NSView * subSubView in [subview subviews])
   {
      if([[subSubView  className] isEqualToString:@"NSTableHeaderView"] &&  [[subview className] isEqualToString:@"NSClipView"]) 
      {
         [subSubView setFrameSize:NSMakeSize(subSubView.frame.size.width, subSubView.frame.size.height+5)];//HeaderView Frame
         [subview setFrameSize:NSMakeSize(subview.frame.size.width, subview.frame.size.height+5)];//ClipView Frame
      }

    }
    if ([[subview className] isEqualToString:@"_NSCornerView"])
    {
       [subview setFrameSize:NSMakeSize(subview.frame.size.width, subview.frame.size.height+5)]; //CornerView Frame
    }
}
于 2011-12-23T06:50:12.420 回答