TableView中的标题重复多次

时间:2017-04-28 14:30:59

标签: ios objective-c uitableview tableviewcell

我遇到了一些在屏幕上重复出现的标题问题。它似乎出现在我单击TableViewCell中的textView时,它会自动滚动以将单元格放在屏幕中间,并在所有这些过程中写入。 标题“重复”可以在页脚中,也可以在其他任何位置获取信息。

以下是屏幕截图:![enter image description here

以下是代码:

- (NSString *)tableView:(__unused UITableView *)tableView titleForHeaderInSection:(NSInteger)index //HEADER
{
    return [[self sectionAtIndex:index].header description];
}

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

    UILabel *myLabel = [[UILabel alloc] init];
    myLabel.frame = CGRectMake(12, 0, tableView.frame.size.width, 25);
    myLabel.font = sectionFont;
    myLabel.textColor = sectionColor;
    myLabel.backgroundColor = colorSegment;
    myLabel.text = [self tableView:tableView titleForHeaderInSection:section];

    UIView *headerView = [[UIView alloc] init];
    [headerView addSubview:myLabel];

    return headerView;
}

2 个答案:

答案 0 :(得分:3)

您不需要对willDisplayHeaderView中的view参数执行任何操作,也不需要将任何内容转发给delegateviewForHeaderInSection中的heightForHeaderInSection'(这些是委托人)方法所以你是代表)。 heightForHeaderInSection应该返回静态值,而不是UITableViewAutomaticDimension,如果不使用自动布局,则会导致布局问题。您的标题视图由“sectionAtIndex”功能检索,但使用UItableViewDataSource函数“titleForHeaderInSection”代替“viewForHeaderInSection”可能更容易,或生成UILabels在飞行中。

答案 1 :(得分:1)

在textDidChange函数中,添加那些行以防止在开始操作之前完成动画;

 [CATransaction begin];

    [CATransaction setCompletionBlock: ^{

        [self.tableView beginUpdates];

        [self.tableView endUpdates];

    }];

    [CATransaction commit];