UICollectionView无限滚动:重用索引路径并清除内容

时间:2013-04-09 19:48:34

标签: ios objective-c cocoa-touch uiscrollview uicollectionview

使用a previous question的答案,我做了一个无限卷轴。但是,滚动时我遇到了问题。

似乎在一毫秒内,UICollectionView(或者可能是UIScrollView)认为所显示的细胞不再可见,因此将细胞重新用于新细胞。这导致在滚动时双重使用单元格。 我认为这是我的问题的原因是因为为了能够无限滚动而使用的“作弊”是重置contentOffset的{​​{1}}。

我的UIScollView的单元格包含一个背景图像,使用UICollectionView异步下载(从缓存中获取)。 另一个副作用是当连续滚动视图“屏幕长度”时,屏幕会被截断。几乎就像在MKNetworkKit中发生了reloadData,但代码根本没有重新加载数据。

我的问题是:如何阻止UIScrollView重复使用可见单元格并突然截断视图?

2 个答案:

答案 0 :(得分:1)

有2个重用标识符。当您重置contentOffset之间的切换时。

答案 1 :(得分:0)

看起来我在旋转设备时看到了重复使用可见细胞。 我在屏幕上显示来自网络图像搜索的图像,并使用固定尺寸来准确填充UICollectionView边界的纵向和横向。但是拉伸图像的大小我设置了一点,我在旋转时看到了重复使用或更多的单元格(也就是重新加载数据)。 我正在重新加载之前计算当前图像大小(在collectionView:numberOfItemsInSection :)从我想要的图像量解决它。准确的图像配合可以防止我额外负载和重复使用。