如何在UITableView的节标题上方放置UIView?

时间:2014-11-08 01:33:04

标签: ios cocoa-touch uitableview

我尝试在表格视图的顶部放置一个视图。它似乎只覆盖单元格,但不包括节标题。我希望它涵盖单元格和节标题。

enter image description here

在我的UITableViewController子类中:

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

    UIView* veilView = [[UIView alloc] initWithFrame:CGRectMake(25.0f, 100.0f, 100.0f, 150.0f)];
    veilView.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.5f];
    [self.view addSubview:veilView];
}

节标题以典型方式构建:

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

    CustomTableSectionHeaderView* header = [[CustomTableSectionHeaderView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, tableView.frame.size.width, [CustomTableSectionHeaderView height])];
    header.text = [self.displayAlphabet objectAtIndex:section];
    return header;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return [CustomTableSectionHeaderView height];
}

2 个答案:

答案 0 :(得分:2)

尝试在创建后更改视图的zPosition

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

    UIView* veilView = [[UIView alloc] initWithFrame:CGRectMake(25.0f, 100.0f, 100.0f, 150.0f)];
    veilView.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.5f];
    [self.view addSubview:veilView];
    [self.addressTextView.layer setZPosition:1000]
}

更高的数字位于其他视图的顶部,并且比例是任意的,因此您可以尽可能高。默认值为0,但是节标题的值将高于它们在您滚动时它们引用的单元格上的值。

答案 1 :(得分:1)

这是由计时问题引起的。我实际上是从我的服务器加载表的数据。我在服务器返回数据之前放置了覆盖视图。当服务器确实返回数据时,我重新加载表视图,导致在覆盖视图的顶部创建节标题。

这将解决问题:

// When server returns table data:
[self.tableView reloadTable];
[self.veilView.superview bringSubviewToFront:self.veilView];