objective-cmacoscocoanstableviewnstableheaderview

How to increase the height of NSTableHeaderView?


I need to implement a headerview with specific size and gradient. I have to insert images in certain cells of the headerview.Tried to create the cells for the headerview using the following code,but i was not able to customize the headerview.

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

If I use the overridden subclass of headerview, I was not able to view the images or text in the header cell.Please provide me any pointers to solve this issue.

 

I was able to insert images and text by subclassing the NSTableHeaderCell.How to increase height of the NSTableHeaderView?


If I subclass both NSTableHeaderView and NSTableHeaderCell , was not able to view anything in the headercell.I used the following code for setting headerview and headercell

[tableView setHeaderView:CustomHeaderView];

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

I have the same issue as given in the below url

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


Solution

  • Following link helped me in solving the issue.

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

    You need to set the Frame for NSClipView, NSTableHeaderView and the CornerView This is how I implemented the same in Code.

    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
        }
    }