UICollectionView 不重绘

Posted

技术标签:

【中文标题】UICollectionView 不重绘【英文标题】:UICollectionView Not Redrawing 【发布时间】:2019-07-18 00:06:16 【问题描述】:

我有一个非常简单的 UICollectionView,由于某种原因,它在应用过滤器后不会像我预期的那样 reloadData()。我在过滤后的数组中获得了正确的值,但是我在集合视图中获得了在滚动之前不会清除的流氓单元格 - 出列。

在某些情况下它可以正常工作。我还没有理解它没有的情况。

我有一个对象数组,以及一个用于保存从该主数组过滤的值的数组,即:

hourly = hourlyMaster.filter  $0.forecastDateTime >= minDate `

cellForItemAt 功能一切正常。我只想在将过滤器应用于数组后重绘视图。显然,

hourlyCollectionView.reloadData()

紧跟过滤器并没有完成它。我敢肯定,我在这里缺少一些简单的东西。非常感谢任何想法。

【问题讨论】:

【参考方案1】:

尝试将reloadData() 放在hourly 数组的didSet 中,以便在更新数据源时始终重新加载集合视图。您调用reloadData() 的速度可能比filter 函数的执行速度快。

var hourly: [Date] = [] 
     didSet 
          hourlyCollectionView.reloadData()
     

【讨论】:

@SGraham 能否请您上传更多代码,以便我查看所有内容的布局以及您的变量声明的样子。【参考方案2】:

从来没有找到可行的解决方案或解决这个问题。不久前发现了一个雷达...here.

解决方法就是使用 yourCollectionView.reloadSections()

这解决了我的问题。我不确定在我的情况下是否有另一个变量导致了这个问题,但没有其他任何工作。

【讨论】:

以上是关于UICollectionView 不重绘的主要内容,如果未能解决你的问题,请参考以下文章

图像设置为零时UIImageView不重绘

UIView 不重绘,但元素错位

NSTableView 在特定条件下不重绘

gtk 绘图区不重绘内容

Android 4+ html5画布不重绘

ExtJS:重新加载数据存储而不重绘网格