2010-08-06 57 views
9

每当我设置我的tableHeaderView我没有看到它在模拟器中。 如果我将它作为子视图添加,它最终会在节标题下绘制。任何想法我在这里失踪?tableView.tableHeaderView被设置,但没有绘制

我有一个XIB文件。虽然我没有看到IB中的任何属性影响headerViews。

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

编辑: StandardTableHeaderView.m init方法:所有代码

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

回答

7

首先看起来不错。

2可能出现的问题:

  • self.tableView未设置
  • tableHeaderView被重写,我有同样的问题后viewDidLoad
+0

我的tableView设置 - 细胞起作用精细和日志显示tableHeaderView帧细。我并没有改变tableHeaderView在其他地方..也许有些怪异,应该复制到一个新的项目? – quantumpotato 2010-08-09 14:54:36

+0

现在我将尝试调整tableview的大小并将Header视图添加为单独的视图。 – quantumpotato 2010-08-09 14:56:20

+1

您如何检查tableView属性是否已设置(而不是零)?单元格绘制的事实并不一定说tableView属性不是零...尝试添加'NSLog(@“self.tableView =%@,self.tableView.tableHeaderView =%@”,self.tableView ,self.tableView.tableHeaderView);'紧跟在'self.tableView.tableHeaderView = headerView;'viewDidLoad'里面,看看你在日志中得到了什么...... – 2010-08-09 16:36:47

5

,并注意到,我在我的NIB定义的任何tableViewHeader会不会出现,如果我通过调用初始化我的tableview:

- (id)initWithStyle:(UITableViewStyle)style 

但它奇迹般地出现没有努力,当我初始化我的tableview使用:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 

奇怪。

+0

当你使用initWithNibName :,那么你所有的NIB信息(如tableHeaderView)都会从你指定的NIB加载。这可能就是为什么它“神奇地出现”:) – 2015-05-09 08:57:43

4

注意!如果你期望表视图为你设置​​标题视图的框架,那么你错了,会得到非常奇怪的结果。

我有我的设置为CGRectZero认为它会解决它自己,但事情不会出现,当它出现时,它会出现在导航栏下或隐藏到第一个单元格等等。

-7

尝试在你的头中设置的UITableViewDelegate和下面的代码放置在您的.m文件。

#pragma mark UITableViewDelegate 
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
    return 44.0f; 
} 

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    StandardTableHeaderView *headerView = [[StandardTableHeaderView alloc] initWithFrame:CGRectMake(0,0,320,44)]; 

    return headerView; 
} 
+1

这是一个部分标题..不是表头视图... – TheCodingArt 2015-08-12 13:25:59

2

我试图把的tableHeaderView设置在ViewDidLoadloadView方法 - 它没有工作:视图的一部分是白色的,不可见的完全。然后我试图把它放到ViewDidAppear和它的工作:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    [self setupTableHeaderView]; 
} 
+0

这对我来说也是如此......但为什么?我有其他的Xcode项目,我已经在'''viewDidLoad'''中设置了表头视图,并且一切正常。....嗯。非常感谢:) – Supertecnoboff 2016-11-15 12:40:12

0

我有我在那里把一个tableviewcontroller内部视图作为头一个问题,它不会显示出来,当我跑的应用程序,问题是当没有原型单元格时,我添加了标题。如果你添加至少一个原型单元格,然后添加它上面的头部,然后删除单元格(如果需要的话),它将其注册为一个headerview正确

0

当你在故事板中的UITableView中的UIView,并尝试设置tableView.tableHeaderView = YOUR_VIEW,它不会工作。你必须首先拖放该视图外部视图控制器创建其出口,然后设置

tableView.tableHeaderView = YOUR_VIEW