【问题标题】:not unique cells in cellForItemAtIndexPath:cellForItemAtIndexPath 中不是唯一的单元格:
【发布时间】:2014-12-04 12:52:18
【问题描述】:

这些线到底发生了什么

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

  MenuCollectionViewCell *cell = (MenuCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier
                                                                                                     forIndexPath:indexPath];

特别是在细胞系上?

据我所知,当我滚动集合视图以显示不可见的新单元格并因此隐藏可见的单元格时,iOS 将重用那些超出屏幕的单元格来绘制新的单元格,对吗?

问题是这样的:如果我根据 indexPath 自定义一个特定的单元格,我将多次重复该自定义。例如,如果我将一个单元格的标签设置为红色,当我滚动集合视图并且单元格出列并重用时,我将有很多带有红色标签的单元格。

我怎样才能防止这种情况发生?

【问题讨论】:

    标签: ios cocoa-touch uicollectionview uicollectionviewcell


    【解决方案1】:

    覆盖 [UICollectionViewCell prepareForReuse] 并重置方法中的所有自定义。

    【讨论】:

      【解决方案2】:

      在为新的 indexPath 配置单元格之前,您可以在 cellForRowAtIndexPath 中清除它们,或者如果您有 UITableViewCell 的自定义子类,请覆盖 prepareForReuse 方法并在那里清除它。请参阅Apple doc

      编辑 抱歉,您使用的是集合视图而不是表格视图,但同样适用。

      【讨论】:

        【解决方案3】:

        覆盖prepareForReuse重置资源,当单元格滚动出框时调用

        别忘了调用超级方法

        【讨论】:

          猜你喜欢
          • 2012-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多