tableView(_:heightForRowAt:)

时间:2016-11-07 08:29:37

标签: ios uitableview tableviewcell heightforrowatindexpath

我有一个包含14个单元格的表视图。其中一个细胞具有动态高度。

所以,我在tableView(_:heightForRowAt :)中设置这个高度

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
print(indexPath.row)
    if calculatedHeight != nil && indexPath.row == 10 {
        return calculatedHeight!
    }

    return commonCellHeight
}

我希望得到这样的打印输出:

0
1
2
...
13

这应该打印两次或更多次。那不是问题。

但我得到了:

0
0
1
2
...
12
0
1
2
...
13

有时它按预期从0到13计数,有时从0到12计数,开头有两个零。

因此,我设置了错误单元格的高度 当我检查if calculatedHeight != nil && indexPath.row == 10时,我实际上是在设置第12行的高度,而不是根据需要设置第11行。

发生了什么?我的错误在哪里?

更新

所以,我设法解决了这个问题。

关键是我在桌子上面做了selectRow(at:animated:scrollPosition:)的内部事情。甚至在第一次致电tableView(_:heightForRowAt:)之前。

现在,当我删除了早期选择时,事情进展顺利,indexPath.row == 10对应于预期的第11行。

注意

我不认为这是一个很好的答案,因为我真的不明白为什么会以这种方式发生。

所以,如果你知道真正的原因,请发表你的回答,我可能会接受它。

0 个答案:

没有答案