UICollectionViewCell 随机隐藏
UICollectionViewCell gets hidden randomly
我有一个 UIView,我在其中添加了一个 UICollectionView
作为横幅视图,看起来像一个旋转木马。存在 UIView
的 Viewcontroller
是 pageviewcontroller
.
的一部分
页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
以外的某个线程中被调用
- 检查是否有关于多次调用reloadData或updateconstraints
的情况
没有解决我的问题,我意识到在某些情况下 CGSizeZero 被返回给 collectionView:layout:sizeForItemAtIndexPath:.
当避免 CGSizeZero 结果时,一切正常。
同样的问题。
这是我的情况:
我的 collection 视图有自定义布局。我使用默认的流布局没有任何问题。
当我使用我的自定义布局时,其单元格宽度是屏幕宽度的一半。当我滚动到第 5 个单元格时,所有单元格都无故隐藏了。
最后我发现当我在 Storyboard 的布局 class 中正确地 设置单元格的大小时,问题就解决了。
希望对您有所帮助。
我有一个 UIView,我在其中添加了一个 UICollectionView
作为横幅视图,看起来像一个旋转木马。存在 UIView
的 Viewcontroller
是 pageviewcontroller
.
页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 以外的某个线程中被调用
- 检查是否有关于多次调用reloadData或updateconstraints 的情况
没有解决我的问题,我意识到在某些情况下 CGSizeZero 被返回给 collectionView:layout:sizeForItemAtIndexPath:.
当避免 CGSizeZero 结果时,一切正常。
同样的问题。
这是我的情况:
我的 collection 视图有自定义布局。我使用默认的流布局没有任何问题。
当我使用我的自定义布局时,其单元格宽度是屏幕宽度的一半。当我滚动到第 5 个单元格时,所有单元格都无故隐藏了。
最后我发现当我在 Storyboard 的布局 class 中正确地 设置单元格的大小时,问题就解决了。
希望对您有所帮助。