首页 > 解决方案 > 发生单元格内容交互时更新 TableView 单元格高度

问题描述

我有一个UITableView包含许多单元格的。在下面的示例中,这两行各包含一个UICollectionView管理标签。初始加载工作正常,并tableView根据 UICollectionView 高度正确调整行大小。

在此处输入图像描述

在该viewDidLoad方法中,我为 设置了以下配置tableView

        tableView.rowHeight = UITableView.automaticDimension
        tableView.estimatedRowHeight = UITableView.automaticDimension

然后,在viewDidAppear方法中,我要求更新tableView如下:

   override func viewDidAppear(_ animated: Bool) {
        tableView.beginUpdates()
        tableView.endUpdates()
    }

问题1:这种工作,除了它动画tableView行高的增加。有没有办法只在初始负载上解决这个问题?

第二个问题是,如果用户与内容交互并删除其中一个,即使collectionView调整大小,更新的内容大小也不会触发tableView行更新其高度,如下面的屏幕截图所示:

在此处输入图像描述

可能是因为它在 a 内,tableView cell因为通常情况下,它会collectionView自动调整大小。collectionView当位于 a 之外时,请参阅下面的屏幕截图tableView

在此处输入图像描述

如果我滚动tableView,则该行将作为双端队列/重用过程的一部分正确调整大小。见下文:

在此处输入图像描述

我认为问题的一部分是collectionView当它在里面时的布局约束tableViewCell是它被固定在边缘tableViewCell但除非我这样做,否则它不能正确显示所以我迷路了......

问题 2:如何根据其内容的更改修复 tableView 行高调整大小?

标签: iosswiftuitableviewuicollectionview

解决方案


问题#1 -viewDidAppear使用tableView.reloadData()而不是beginUpdates.

问题#2 -tableView.reloadRows()当用户与UICollectionView.


推荐阅读