UICollectionView不重用单元格

时间:2014-10-16 02:17:13

标签: ios objective-c

我有许多具有不同身份价值的细胞。例如“棒球细胞”,“足球细胞”和“AD细胞”。 重复使用“棒球细胞”“足球细胞”对我来说没问题。 但是“AD单元格”对它有一些动画效果,所以如果用户滚动,我不想重新加载它。

那么,有没有办法让collectionview不重用它的单元格呢?

谢谢!

抱歉,澄清更新。

这里我在集合视图中有一些单元格类型:

  1. 棒球队:显示棒球新闻
  2. 足球细胞:秀足球新闻
  3. AD细胞:显示AD_1.jpg - > AD_2.jpg - > AD_3.jpg ...反复
  4. 如果集合视图每次在屏幕外重新加载“AD单元格”,则再次可见。 我停止动画并在重新加载时释放它。用户可能没有机会看到最后的AD图片。 所以我需要一种方法来阻止重复使用AD单元

    感谢。

2 个答案:

答案 0 :(得分:1)

您可以在其他实例中缓存重型单元对象,只需在UICollectionViewDataSource collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath函数中,即可自行加载单元格。 不要使用dequeueReusableCellWithReuseIdentifierdequeueReusableSupplementaryViewOfKind。但是所有内存管理都应该关注。

所以在你的情况下,你在另一个缓存类中缓存“AD单元格”,在UICollectionViewDataSource委托中只使用缓存类中的缓存单元格对象。

答案 1 :(得分:0)

信息不足。

您通常需要针对不同类型的细胞(具有不同结构)的不同细胞识别,但对于具有相同结构的细胞,需要相同的ID。这也适用于动画。

使用相同类型的多个单元而不进行回收可能会导致大量的内存流失",这是一个坏主意。

一个单元格不会被重复使用,直到它不在屏幕上,此时你应该停止动画。然后,您可以完全准备再循环单元格以供重复使用,包括设置新动画。