【问题标题】:How do I detect when a UICollectionViewCell is created for the first time?如何检测第一次创建 UICollectionViewCell 的时间?
【发布时间】:2014-08-08 01:27:23
【问题描述】:

我正在使用UICollectionView 在网格中显示单元格。我想为每个单元格添加滑动手势以触发删除单元格的快捷方式。如果我改用UITableView,那就很容易了。在tableView:cellForRowAtIndexPath: 中,我会出列一个单元格。当且仅当单元格为零时,我才会将滑动手势附加到新创建的单元格上。这个过程对于 UICollectionView 来说并不容易。

- (UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UserCollectionViewCell* cell = [self.avatarCollectionView 
        dequeueReusableCellWithReuseIdentifier:AVATAR_CELL_ID 
        forIndexPath:indexPath
    ];
    cell.user = [self.users objectAtIndex:indexPath.row];
    return cell;
} 

没有办法检测单元格是否是第一次创建,因为documentation说:

您对此方法的实现负责创建, 配置并返回给定项目的适当单元格。 您可以通过调用 dequeueReusableCellWithReuseIdentifier:forIndexPath: 的方法 集合视图并传递对应于的重用标识符 你想要的细胞类型。该方法总是返回一个有效的单元格 对象。

我不能每次都在这个函数中添加滑动手势,因为多个手势会叠加。我只需要将滑动手势添加到新创建的单元格。

【问题讨论】:

  • 创建一个具有属性 swipeGestureRecognizer 的 CollectionViewCell 自定义类。当单元格出列时,询问属性是否为 nil 以及它是否初始化识别器并让 cell.swipeGestureRecognizer 指向它。
  • 嗯,初始化后忘记将识别器添加到 cell.contentView。 [cell.contentView addGestureRecognizer:swipeRecognizer]; cell.swipeGestureRecognizer = swipeRecognizer;

标签: ios cocoa-touch uicollectionview


【解决方案1】:

我会在您的自定义 UICollectionViewCell 的 init 方法中添加手势识别器,在这种情况下可能是 UserCollectionViewCell。

然后您可以实现自定义委托协议,并将具有集合视图的视图控制器分配为您的 UserCollectionViewCell 的委托。

或者您可以使用 NSNotificationCenter 来处理带有视图控制器的 collectionview 单元格的方法。

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    相关资源
    最近更新 更多