当 UITableView 单元格中的 UITextView 大小增加时,节标题重复

Posted

技术标签:

【中文标题】当 UITableView 单元格中的 UITextView 大小增加时,节标题重复【英文标题】:Section header is repeating when UITextView size is increased in UITableView Cells 【发布时间】:2017-11-17 10:18:34 【问题描述】:

自从一天以来我一直在解决这个问题,我尝试了很多方法来解决这个问题,但还没有成功。我有一个带有 3 个自定义单元格的表格视图,并且我为最后两个部分添加了部分标题。这是屏幕截图。

当我在 TextView 中输入文本时,显示最后一节标题正在重复。我的 TextView 是可编辑的,我已禁用滚动以根据文本大小调整 textview 的大小。

这里是代码。

    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    
        return 3;
    

    -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    
        NSArray *titleArray = @[@"",@"About You",@"Gender"];

        NSString *titleHeading = [titleArray objectAtIndex:section];

        return titleHeading;
    

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
    return section == 0 ? CGFLOAT_MIN : 35;


    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    

        NSString *identifier = [NSString stringWithFormat:@"cell%ld,%ld",indexPath.section, indexPath.row];
        id cell = [tableView dequeueReusableCellWithIdentifier:identifier];

if (indexPath.section == 1)
            
                ProfileAboutCell *cellObj = [tableView dequeueReusableCellWithIdentifier:identifier];
                if (!cellObj)
                
                    [_tableView registerNib:[UINib nibWithNibName:@"ProfileAboutCell" bundle:nil] forCellReuseIdentifier:identifier];
                    cellObj = [tableView dequeueReusableCellWithIdentifier:identifier];
                
                cellObj.selectionStyle = UITableViewCellSelectionStyleNone;

                //[cellObj.txtAboutYou layoutIfNeeded];
        cellObj.txtAboutYou.delegate = self;
        cellObj.lbl = [[UILabel alloc] initWithFrame:CGRectMake(5.0, 0.0,cellObj.txtAboutYou.frame.size.width - 10.0, 34.0)];
        cellObj.lbl.text = @"About You";
        [cellObj.lbl setBackgroundColor:[UIColor clearColor]];
        [cellObj.lbl setTextColor:[UIColor lightGrayColor]];
        [cellObj.txtAboutYou addSubview:cellObj.lbl];
    //        [cellObj.txtAboutYou setText:[kUserDefaults valueForKey:kAbout]];
        //[cellObj.txtAboutYou sizeToFit];



                cell = cellObj;
            

        return cell;
        

TextView 委托方法。

-(void)textViewDidChange:(UITextView *)textView

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:1];
    ProfileAboutCell *cell = [_tableView cellForRowAtIndexPath:indexPath];

    if(![textView hasText]) 
        cell.lbl.hidden = NO;
    
    else
        cell.lbl.hidden = YES;
    
    NSInteger len = textView.text.length;
    cell.lblChar.text=[NSString stringWithFormat:@"%li",500-len];

    [_tableView beginUpdates];
    [_tableView endUpdates];

我试过这个#SO solution 但没有帮助。在这个方向上的任何帮助将不胜感激。提前致谢。

【问题讨论】:

当上面一行的文本视图收缩或扩展时,它会重复标题。 【参考方案1】:

根据我对问题的理解,您可以通过在“titleForHeaderInSection”中设置部分标题来解决它,就像在“cellForRowAtIndexPath”中为每个部分设置单元格一样, 这样,您未设置标题的部分不会导致任何问题。

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

    NSArray *titleArray = @[@"",@"About You",@"Gender"];



if (indexPath.section == 1) 
        NSString *titleHeading = [titleArray objectAtIndex:1];
        return titleHeading;

 if (indexPath.section == 2) 
        NSString *titleHeading = [titleArray objectAtIndex:2];

        return titleHeading;


    

【讨论】:

不...这是在所有部分重复相同的标题“关于你”。

以上是关于当 UITableView 单元格中的 UITextView 大小增加时,节标题重复的主要内容,如果未能解决你的问题,请参考以下文章

当 UITableView 单元格中的 UITextView 大小增加时,节标题重复

当 UITableView 单元格中的进度条不可见时,如何更新它们

UITableView 单元格中的 UITextField 以编程方式成为FirstResponder

UITableView 的单元格中的 iOS Swift Like 按钮

更新 UITableView 单元格中的特定按钮图像

数据未显示在 UITableView 的自定义单元格中