如何更改单元格上TextView文本时重绘TableViewCell

时间:2016-01-24 05:34:43

标签: ios uitextview tableviewcell

我有一个具有TextView的自定义UITableViewCell。并且通过AutoLayout通过TextView的文本长度更改单元格高度 单元格具有文本的设置器(注释),并且在调用setter时,单元格上的TextView文本被更改。但是,当输入长文本而不是之前的文本时,TextView高度不会改变,并且单元格高度也不会改变。因此,单元格无法显示新的全文。在调用setter之前,我也更改了数据源。因此,在滚动并隐藏单元格之后,通过重新显示单元格,单元格具有新的TextView高度,可以显示新的全文。

所以,我认为如果我在更改文本时可以重绘单元格,单元格会显示新的矩形,问题就不算什么了。

我尝试了[cell setNeedsLayout][tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]。 但是,无法重绘细胞。

CustomCell.h

@interface CustomCell :UITableViewCell

@property (nonatomic, copy) NSString *comment;

@end

CustomCell.m

@interface CustomCell ()

@property (weak, nonatomic) IBOutlet UITextView *commentTextView;

@end

@implementation CustomCell

- (void)setComment:(NSString *)comment {
    _comment = [comment copy];
    self.commentTextView.text = _comment;
    [self.commentTextView sizeToFit];
}

@end

如果有人知道重力表演,请告诉我。

1 个答案:

答案 0 :(得分:0)

设置textView的高度约束。设置textView的文本时,请计算高度并重新设置。

/* set  textView text and height  */

textView.text = @"";  // your text here
CGSize sizeThatFitsTextView = [textView sizeThatFits:CGSizeMake(textView.frame.size.width, MAXFLOAT)];
textViewHeightConstraint.constant = sizeThatFitsTextView.height;


-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(nonnull NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}