UICollectionViewCell随机隐藏

我有一个UIView,我在其中添加一个UICollectionView作为横幅视图,看起来像一个旋转木马。 UIView所在的Viewcontrollerpageviewcontroller一部分。

PageVC – > UIViewController – > UIView – > UICollectionView

每个VC都有自己的横幅,所以当刷页时,我会用各自的数据重新加载collectionView ,我能够看到它。 现在,如果访问我已经访问过的页面,则collectionview单元格将消失。 collectionview视图可见,但单元格以某种方式隐藏。

collectionview单元格是一个自定义单元格,我没有使用任何自定义布局,我使用的是默认的flowlayout 。 这在iOS8-devices运行良好。

下面是调试器输出,当单元格可见时:

 CollectionViewCell: 0x7f9db8d9ffa0; baseClass = UICollectionViewCell; frame = (209 3.5; 209 96); clipsToBounds = YES; opaque = NO; layer = > 

当隐形(你现在可以看到它隐藏)时,现在隐藏了被破坏的细胞,不知道它为什么会发生

 CollectionViewCell: 0x7f9dbb5897e0; baseClass = UICollectionViewCell; frame = (0 3.5; 209 96); clipsToBounds = YES; hidden = YES; opaque = NO; layer = > 

indexPathsForVisibleItems返回nil。

我从多个地方调用reloadData导致系统混淆(可能),特别是我在updateconstraints方法中编写了reloadData ,因此对于每个次要约束更改reloadData被调用。

如果遇到同样的问题,请检查调用reloadData for collectionview所有位置。

我遇到了同样的问题。

  • 检查是否在MainThread以外的某个线程中调用了UICollectionView reloadData
  • 检查是否存在多次调用reloadDataupdateconstraints的情况

在没有解决我的问题的情况下,我意识到在某些情况下CGSizeZero被返回到collectionView:layout:sizeForItemAtIndexPath : .

在避免CGSizeZero结果时,一切运行良好。

同样的问题。

这是我的情况:

我的集合视图具有自定义布局。 我使用默认的流布局没有任何问题。

当我使用自定义布局时,其单元格宽度为半屏宽度。 当我滚动到第5个单元格时,所有单元格都无缘无故地隐藏起来。

最后我发现当我在故事板的布局类正确设置单元格的大小时 ,问题就解决了。

希望这可以帮助。