UICollectionViewCell随机隐藏

时间:2016-08-12 08:43:42

标签: ios objective-c uicollectionview uicollectionviewcell

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

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 = <CALayer: 0x7f9dbb5dde60>>

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

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

indexPathsForVisibleItems 正在返回nil。

3 个答案:

答案 0 :(得分:3)

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

如果您遇到同样的问题,请检查reloadData reloadData的所有地点。

答案 1 :(得分:1)

我遇到了同样的问题。

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

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

当避免使用CGSizeZero时,一切运行良好。

答案 2 :(得分:1)

同样的问题。

这是我的情况:

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

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

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

希望这有帮助。