UICollectionViewCell 随机隐藏

UICollectionViewCell gets hidden randomly

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

的一部分

页VC --> 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>>

当不可见时(你现在可以看到它隐藏了)dequed 单元格现在隐藏了,不知道为什么会这样

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

indexPathsForVisibleItems 返回 nil。

我从多个地方调用 reloadData,这导致系统变得混乱(可能),特别是我在我的 updateconstraints 方法中写了 reloadData,因此对于每个次要约束正在调用更改 reloadData

如果您遇到同样的问题,请检查您为 collectionview 致电 reloadData 的所有地方。

我遇到了同样的问题。

之后

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

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

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

同样的问题。

这是我的情况:

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

当我使用我的自定义布局时,其单元格宽度是屏幕宽度的一半。当我滚动到第 5 个单元格时,所有单元格都无故隐藏了。

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

希望对您有所帮助。