我使用 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:
方法(我已尝试记录)。
有人知道这里到底发生了什么事吗?这是一个错误吗?
非常感谢任何潜在客户!