UITableView节标题出现在表标题视图上

时间:2015-02-09 08:29:34

标签: objective-c uitableview

我正在为UITableView的节标题和表标题创建自定义视图。问题是剖面视图(绿色)出现在表头视图(红色)

enter image description here

表标题视图的代码是

self.headerImageView = [[UIView alloc] init];
self.headerImageView.backgroundColor = [UIColor redColor];
self.tableView.tableHeaderView = self.headerImageView;

我在这里设置了它的框架

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.headerImageView.frame = CGRectMake(0, 0, CGRectGetWidth(self.tableView.frame), 100);
}

节标题的代码

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];
    view.backgroundColor = [UIColor greenColor];
    return view;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 40;
}

我做错了什么? 欢呼声

1 个答案:

答案 0 :(得分:1)

只需将代码全部放入 - (void)viewDidLoad,就像这样:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.headerImageView = [[UIView alloc] init];
    _headerImageView.backgroundColor = [UIColor redColor];
    _headerImageView.frame = CGRectMake(0, 0, CGRectGetWidth(self.tableView.frame), 100);
    self.tableView.tableHeaderView = _headerImageView;
}

我发现 - (void)viewDidLayoutSubviews在滚动表时会被多次调用。也许这就是问题所在。