【问题标题】:Empty UICollectionView inside UITableViewCellUITableViewCell 内的空 UICollectionView
【发布时间】:2016-11-20 04:49:44
【问题描述】:

我已使用本教程将 collectionView 放入 UITableView。 https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/

UITableViewController 是 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

【问题讨论】:

  • 您是否可以发布UICollectionView dataSource 和委托的代码?我认为您的问题可以通过刷新集合视图来解决,而不必重新加载UITableViewCell
  • 你解决了这个问题吗,如果解决了,请告诉我们解决方案是什么,因为我面临着完全相同的问题

标签: ios objective-c iphone uitableview uicollectionview


【解决方案1】:

这是因为您的单元格高度不会在快速滚动时更新。 UITableView 缓存 indexPath 的行高只是为了计算滚动区域。您需要在heightForRowAtIndexPath:方法中正确设置约束并调整单元格的高度。

应用heightForRowAtIndexPath: 内部的逻辑,你的问题就会得到解决。

编码愉快!!

【讨论】:

  • 感谢您的帮助。它仍然不起作用。 HeightForRowAtIndexPath:返回自动尺寸。此外,我当前的代码确实显示了正确的单元格高度,但是,集合视图没有加载单元格。刷新单元格可以解决这个问题。还有其他想法吗?
【解决方案2】:

我有同样的问题。有时,我在 tableviewcell 中的集合视图不会显示集合视图单元格。我通过在主线程上调用 collectionView reload 解决了这个问题。我不完全知道原因,因为我在每个单元格上都有很多后台调用,并且正在主线程本身上重新加载 tableview。尽管如此,还是不​​得不在主线程上重新加载collectionview。

DispatchQueue.main.async {
    cell.colViewProperties.reloadData()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多