Ios UICollectionViewCell随机隐藏

Ios UICollectionViewCell随机隐藏,ios,objective-c,uicollectionview,uicollectionviewcell,Ios,Objective C,Uicollectionview,Uicollectionviewcell,我有一个UIView,我在其中添加了一个UICollectionView,作为一个横幅视图,看起来像一个旋转木马。存在UIView的Viewcontroller是pageviewcontroller的一部分 PageVC-->UIViewController-->UIView-->UICollectionView 每个VC都有自己的横幅,因此当浏览页面时,我会用相应的数据重新加载collectionView,并且我能够看到它。现在如果访问我已经访问过的页面,collectionview单元格将消

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

PageVC-->
UIViewController
-->
UIView
-->
UICollectionView

每个VC都有自己的横幅,因此当浏览页面时,我会用相应的数据重新加载
collectionView
,并且我能够看到它。现在如果访问我已经访问过的页面,
collectionview
单元格将消失。
collectionview
是可见的,但单元格以某种方式隐藏起来

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

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

CollectionViewCell: 0x7f9db8d9ffa0; baseClass = UICollectionViewCell; frame = (209 3.5; 209 96); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x7f9dbb5dde60>>
CollectionViewCell:0x7f9db8d9ffa0;基类=UICollectionViewCell;帧=(2093.5;20996);clipsToBounds=是;不透明=否;图层=>
当不可见时(你现在可以看到它的隐藏),被去除的细胞现在被隐藏,不知道为什么会发生

CollectionViewCell: 0x7f9dbb5897e0; baseClass = UICollectionViewCell; frame = (0 3.5; 209 96); clipsToBounds = YES; hidden = YES; opaque = NO; layer = <CALayer: 0x7f9dbb590220>>
CollectionViewCell:0x7f9dbb5897e0;基类=UICollectionViewCell;帧=(0 3.5;209 96);clipsToBounds=是;隐藏=是;不透明=否;图层=>

indexPathsForVisibleItems返回零。

我从多个位置调用了
重新加载数据,这导致系统混乱(可能是)特别是我在我的
updateconstraints
方法中编写了
reloadData
,因此对于每个小的约束更改
reloadData
都被调用


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

我遇到了相同的问题

之后

  • 检查是否在主线程以外的某个线程中调用了UICollectionView重载数据
  • 检查是否存在多次调用重新加载数据更新约束
在没有解决我的问题的情况下,我意识到在某些情况下,cgizezero是为collectionView:layout:sizeforitematindepath:返回的

在避免CGSizeZero结果时,一切正常。

同样的问题

我的情况如下:

“我的收藏”视图具有自定义布局。我使用默认的流布局,没有任何问题

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

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

希望这有帮助