我已经使用本教程将一个collectionView放在UITableView中。 https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/
UITableViewController是dataSource&代表UITableView&每个单元格中的不同集合视图。 问题是我想动态隐藏CollectionView,并在collectionview为空时将其高度更改为0。 为此,我在CellForRowAtIndexPath
中有这个代码if (patients.paraclinicImage.count == 0){
[cell.collectionView setHidden:true];
cell.collectionViewHeight.constant = 0;
} else {
[cell.collectionView setHidden:false];
cell.collectionViewHeight.constant = 80;
}
通过使用此代码,collectionView最初正确显示。但是,当快速滚动时,我有时会使用正确的单元格高度加载单元格,但是集合视图将为空。刷新单元格可以解决此问题。删除上面的代码行也解决了这个问题。
以下是两张图片,显示了第一次渲染时以及多次滚动(以及单元格的重新渲染)后单元格的外观。
滚动前问题如下图所示
但滚动后的问题似乎就像下面一样
调试视图层次结构,显示具有适当单元格高度的空collectionView
答案 0 :(得分:0)
这是因为快速滚动时不会更新单元格高度。 UITableView缓存indexPath的行高只是为了计算滚动区域。您需要正确设置约束并使用heightForRowAtIndexPath:
方法调整单元格的高度。
在heightForRowAtIndexPath:
内应用逻辑,您的问题将得到解决。
快乐编码!!
答案 1 :(得分:0)
我有同样的问题。有时,我在tableviewcell中的集合视图不会显示collectionview单元。我通过在主线程上调用collectionView重新加载来解决它。我不完全知道原因,因为我在每个单元格上都有许多后台调用,并且正在主线程本身上重新加载tableview。尽管如此,还是必须在主线程上重新加载collectionview。
DispatchQueue.main.async {
cell.colViewProperties.reloadData()
}