【问题标题】:UICollectionView prevent cell re-use only for first cellUICollectionView 防止单元格仅用于第一个单元格
【发布时间】:2014-12-12 08:32:55
【问题描述】:

将 UICollectionView 与自定义 UICollectionViewCell 一起使用,我试图仅向第一个单元格添加一些额外信息。为此,我将覆盖 GetCell 方法

public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)

这很好用,第一个单元格会显示额外的信息。问题是该单元格在 CollectionView 中再次被重复使用,并且在那里再次显示了额外的信息。

如何防止重复使用集合视图中的第一个单元格?

谢谢!

【问题讨论】:

  • 您不会阻止重复使用。解决方案是正确使用重用或使用两个不同的单元标识符。一个用于第一行,第二个用于所有其他行。

标签: ios uitableview xamarin uicollectionview


【解决方案1】:

几个选项:

  • 覆盖 UICollectionViewCell 的 prepareToReuse 方法,并重置 你在那个方法中想要什么
  • 首先使用不同的重用标识符 和其他细胞
  • 对 first 和 other 使用不同的原型/类 细胞

要使用不同的重用标识符: 如果您通过原型在情节提要中执行此操作,请为第一个单元格创建另一个原型并在您的 UITableViewDatasource 中执行类似的操作

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;
    if (indexPath.row == 0) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"FirstTableCell" forIndexPath:indexPath];
    } else {
        cell = [tableView dequeueReusableCellWithIdentifier:@"UsualTableCell" forIndexPath:indexPath];
    }
    return cell;
}

【讨论】:

  • 谢谢,如果我选择第二种选择。如何指定第一个单元格应使用另一个标识符?
  • 更新了答案,只需复制情节提要中的当前原型单元格,然后更改重用标识符cdn2.raywenderlich.com/wp-content/uploads/2013/03/…
  • 再次感谢您的示例。对于覆盖单元格内的 prepareToReuse 方法的第一个替代方法。单元格如何访问索引?细胞如何知道它是第一个细胞?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
相关资源
最近更新 更多