Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

tableView.tableHeaderView being set but not drawn

whenever I set my tableHeaderView I'm not seeing it in the Simulator. If I add it as a subview, it ends up getting drawn underneath the section header. Any idea what I'm missing here?

I do have a XIB file. I didn't see any properties in IB to affect headerViews though.

- (void)viewDidLoad {   
[super viewDidLoad];
MyTitleView *titleView = [[MyTitleView alloc] initWithFrame:CGRectMake(60,0,260,40)];
titleView.label.text = @"My Title";
self.navigationItem.titleView = titleView;
[titleView release];

StandardTableHeaderView *headerView = [[StandardTableHeaderView alloc] initWithFrame:CGRectMake(0,0,320,44)];
self.tableView.tableHeaderView = headerView;
//  [self.view addSubview:self.tableView.tableHeaderView];
//  [headerView release];


NSLog(@"Header: %@",self.tableView.tableHeaderView); //Logs ] Header:     <StandardTableHeaderView: 0x5a508b0; frame = (0 0; 320 44); layer = <CALayer: 0x5a51130>>

Edit: StandardTableHeaderView.m init method:

- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
    self.backgroundColor = [UIColor redColor];
    self.label = [[UILabel alloc] initWithFrame:CGRectMake(frame.origin.x,0,frame.size.width,frame.size.height)];
    self.label.backgroundColor = [UIColor clearColor];
    self.label.textColor = [UIColor whiteColor];
    self.label.font = [UIFont fontWithName:@"Helvetica" size:16];
    [self addSubview:self.label];
}
return self;
}
like image 711
quantumpotato Avatar asked Aug 06 '10 15:08

quantumpotato


2 Answers

Note! If you expect the table view to set the frame of the header view for you you're mistaken and will get very weird results.

I had mine set to CGRectZero thinking it'd solve itself, but the thing wouldn't appear and when it did, it would appear tucked in under the navbar or sticking down into the first cell and such.

like image 149
Kalle Avatar answered Oct 10 '22 15:10

Kalle


First of all your code looks fine.

2 possible problems:

  • self.tableView is not set
  • tableHeaderView is overridden after viewDidLoad
like image 7
Michael Kessler Avatar answered Oct 10 '22 15:10

Michael Kessler