Swift - UITableViewCell在更新UILabel文本时跳转

时间:2017-01-31 15:28:46

标签: ios swift string uitableview uilabel

当我在UITableViewCell中更新我的UILabel文本时,如下所示:

self.label.text = "label text"

一切都很好......

但是当我从 Struct Array 更新我的标签文本时,它会导致UITableView有时会在向上滚动时跳转,而不是在向下滚动时跳转,而是在我向下滚动时滚动到顶部...

无法理解为什么会发生这种情况....

结构,数据是从我从服务器获得的结果中添加的

struct ContentStruct {
  var textLink : String? = ""
  var title : String? = ""
  var text : String? = ""
}

CellForRow

let postData = cellContentArray[(indexPath as NSIndexPath).section]

cell.binData(content: postData)

TableViewCell

 func binData(content: ContentStruct) {
    self.titleLabel.text = content.title
    self.text.text = "yytytytyt"//text
    self.uuidLabel.text = "yhhyhyhyyh"
   }

我正在调整单元格的大小: 在ViewDidLoad中:

tableView.rowHeight = UITableViewAutomaticDimension

然后这个:

 func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    let height = self.heightAtIndexPath.object(forKey: indexPath)
    if ((height) != nil) {
        return CGFloat(height as! CGFloat)
    } else {
        return UITableViewAutomaticDimension
    }
}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    let height = cell.frame.size.height
    self.heightAtIndexPath.setObject(height, forKey: indexPath as NSCopying)
}

有什么想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我发现当您的动态单元格高度与估计的行高不匹配时会发生类似跳转。最简单的修复方法是固定单元格高度,或者每个单元格单独计算高度。