heightForRowAtIndexPath

heightForRowAtIndexPath

我有表格视图来显示用户的评论

我需要根据内容高度使每行的高度动态变化

我搜索它,我发现

height heightForRowAtIndexPath 方法

但是它不起作用,或者我不知道如何使用它!

这是我的代码:

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
   let username = cell.viewWithTag(1) as! UILabel

    let comment = cell.viewWithTag(2) as! UITextView
    username.text = usernames[indexPath.row]

    comment.text = comments[indexPath.row]

    return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.comments.count
}

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension;
}

最佳答案

您尚未正确实现heightForRowAtIndexPath方法。您应该阅读self sizing table view cells,因为它会做您想要的。

基本上,要使用自定义大小的单元格,请为UITableView设置一个估计的行高,并将rowHeight设置为UITableViewAutomaticDimension的值(或Swift 4.2或更高版本中的UITableView.automaticDimension)。

Swift 4.2之前的:

tableView.estimatedRowHeight = 85.0
tableview.rowHeight = UITableViewAutomaticDimension

Swift 4.2:
tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableView.automaticDimension

将估计的行高度值设置为一个非常接近所有单元格的大致平均高度的值。这有助于iOS了解完整UIScrollView内容的大小。

同样,对于自调整大小的单元,您将根本不会实现heightForRowAtIndexPath。每个像元高度是从每个像元内的约束条件获得的。

有关单元大小的良好指南,请查看this tutorial

如果您不想对单元格进行自定义大小,则可以实现heightForRowAtIndexPath,但是您需要为每个单元格返回正确的高度。您可以根据indexPath参数确定该逻辑。但是您需要确保以像素(逻辑像素)为单位返回每个单元格的高度(由indexPath指定)。

关于ios - tableView heightForRowAtIndexPath不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35925574/

10-11 19:51