【发布时间】: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