gpt4 book ai didi

swift - tableView.beginUpdates() 行为异常

转载 作者:行者123 更新时间:2023-11-28 09:24:18 24 4
gpt4 key购买 nike

情况(使用 Swift 4.0 & > iOS10.0)

  • 我有一个包含部分和行的 TableView。每个细胞只有一个标签并配置为使其高度适应其标签的高度感谢自动布局。
  • 当一个单元格被点击时,它会显示另一个可能不是大小相同(因此行数不同)。 我有无法正确地为单元格设置动画,所以当它被点击时,它调整其高度以正确显示新标签

尝试

  1. 重新加载整个 TableView ,显示所选的新数据单元格工作正常,但这不是我想要实现的目标。

  2. 我试过了tableView.beginUpdates()tableView.endUpdates() (有和没有完成处理程序)。当我点击单元格时,所选单元格按预期工作,但其他单元格和所有部分跳转和/或消失。这种行为很奇怪,看起来我在搞乱禁止的功能,但这种行为正是我要找的。

  3. 我试过了.reloadRows(at: [indexPath], with: .automatic) .它的行为几乎与 tableView.beginUpdates() 完全相同。 (它会重新加载 tableView,我更愿意避免这种情况)。

  4. 我已尝试使用 layoutIfNeeded() 进行 n°2 和 n°3 的尝试和 layoutSubviews() , 它没有帮助。

代码示例

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
// Attempt n°2
tableView.beginUpdates()
tableView.endUpdates()

// Attempt n°3 (alternatively to attempt n°2)
tableView.reloadRows(at: [indexPath], with: .automatic)
}

问题:

tableView.beginUpdates()解决我的问题的最佳方法?如果是这样,我应该如何使用它?如果不是,那么为单元格设置动画的正确方法是什么?

最佳答案

例如,尝试在 viewDidLoad() 中设置 tableView.estimatedRowHeight = 0。我对 beginUpdates()endUpdates() 的动画有同样的问题,这很有帮助。但就我而言,我使用 heightForRowAtIndexPath 方法。

关于swift - tableView.beginUpdates() 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com