在 IOS 8 中工作的具有动态高度的 UITableView 行在 ios 7 中不工作

Posted

技术标签:

【中文标题】在 IOS 8 中工作的具有动态高度的 UITableView 行在 ios 7 中不工作【英文标题】:UITableView Rows With Dynamic height working in IOS 8 not working in ios 7 【发布时间】:2014-11-29 07:51:56 【问题描述】:

我有一个表格视图,我需要在其中填充具有动态高度的行。

我做了什么:

我有一个高度会动态变化的文本标签。因此,当我在单元格上设置数据时,我将其设置为:

-(void)setCommentDataOnCell:(CommentModel*) data



    CGFloat currentHeigh=_commentTextLabel.frame.size.height,heightDiff;

//Here is the label with dynamic height

    _commentTextLabel.text=data.commentText;
    [_commentTextLabel sizeToFit];
    [self layoutIfNeeded];
    heightDiff=_commentTextLabel.frame.size.height-currentHeigh;

// I change the frame of cell here ie, add the height difference in label

    [self setFrame:CGRectMake(self.contentView.frame.origin.x, self.contentView.frame.origin.y, self.contentView.frame.size.width, self.contentView.frame.size.height+heightDiff)];
    [self layoutIfNeeded];

    commentAuthorLabel.text=data.createdUserName;


现在我已经设置了自动布局,以便动态单元格与单元格内容视图的底部和顶部对齐

然后我为我的 tableview 设置了以下属性

commentListTableView.rowHeight=UITableViewAutomaticDimension;
commentListTableView.estimatedRowHeight=44.0f;

现在我得到了什么:

*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[DiscussionDetailViewController tableView:heightForRowAtIndexPath:]:无法识别的选择器发送到实例 0x78787760”


我还没有实现这个选择器 heightForRowAt

但是我已经实现了 EstimatedHeight as 75.0f,就像我的故事板中的原型单元格一样,我也有一个高度为 8.0f 的会话的标题视图

【问题讨论】:

【参考方案1】:

您需要实现 heightForRowAtIndexPath 方法以支持 ios 7。

请参考这个答案:

https://***.com/a/18746930/1282896

【讨论】:

以上是关于在 IOS 8 中工作的具有动态高度的 UITableView 行在 ios 7 中不工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8中具有动态高度的自定义inputView

高度的自动布局在 iOS 8 中工作但在 iOS 7 中不工作

iOS 7 和 iOS 8 中动态 UITableViewCell 的高度是不可能的

安装不再在 Android Q 中工作的自签名证书

如何在 iPhone 模拟器中工作的 UIAutomation 中获取 captureScreenWithName?

在 FF、IE6 和 IE7 中工作的 HTML 中垂直和水平居中的实用解决方案