使用UITableView动画的UITableView头部渲染问题

时间:2014-03-25 20:00:32

标签: ios objective-c uitableview

我使用 tableView:willDisplayHeaderView:forSection: 来自定义标题视图。它似乎在普通用户滚动下完美地工作。但是如果UITableView通过动画滚动(即删除的行),则不会调用该方法,即使该标题由于该动画而进入视图。

请注意,这不是tableView:viewForHeaderInSection::)

代码如下:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    //Type Cast the view to UITableViewHeaderFooterView
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;

    //Change tintColor property of header to black
    header.tintColor = [UIColor blackColor];

    //See if there is an existing custom subview in the header
    CustomHeaderView* headerContentView = (CustomHeaderView*)[header viewWithTag:1007];

    //If it doesn't exist make it.
    if(headerContentView == nil){ 
        headerContentView = [[CustomHeaderView alloc] initWithFrame:CGRectMake(0, 0, view.frame.size.width, 40.0f)];
        headerContentView.tag = 1007;

        if(section==0){
            headerContentView.label.text =  @"Current Members";
        }
        if(section==1){
            headerContentView.label.text =  @"Others Nearby";
        }            

        [header.contentView addSubview:headerContentView];
    }        
}

好。当我滚动表格时,这就是我所期望的。它使标题变黑,添加自定义视图,并在我指定的任何视图中生成文本。

然而,如果我在tableView:willDisplayHeaderView:forSection:上执行动画,(例如在删除之后)并且由于动画的结果,标题出现,它似乎不会调用UITableView在没有正确渲染的情况下(空白):

- (void)cellDidSelectDelete:(UITableViewCell *)cell {

    [self.tableView beginUpdates];    
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

    [self.tableModel removeItemForUser:cell.userID];
    [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

    [self.tableView endUpdates];        
}

动画显示的标题为白色(未指定黑色),甚至没有调用tableView:willDisplayHeaderView:forSection:方法(我已尝试记录)。

有人知道这里到底发生了什么事吗?这是一个错误吗?

非常感谢任何潜在客户!

0 个答案:

没有答案