问题 UICollectionView删除按钮


我有一个UICollectionView显示几个项目。我还在屏幕工具栏中有一个编辑按钮。

当我按下工具栏编辑按钮时,如何在每个UICollectionViewCell上显示删除图标?

目前谷歌上的例子很少,所以如果有人能指出我正确的方向,那就太好了。

谢谢


6247
2017-10-08 12:28


起源



答案:


编辑项目 UICollectionViews并没有像在a中完成那样完成 UITableView。在表格视图中,有一个编辑模式,它将显示删除按钮。但是对于收藏视图,你必须自己处理。

最初,我这样解决了:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {   
    if (self.editing) {
        // Open an action sheet with the possible editing actions
    }
}

但之后我删除了编辑按钮并添加了一个 UILongPressGestureRecognizer 到了 UICollectionView。当长按一个项目我显示 UIActionSheet 这显示了可能的行动。

其中一个选项可能适合您。


13
2017-10-08 12:57



谢谢GuidoH。我沿着UILongPressGestureRecognizer路线走了,这很有效.......差不多!如何让UIActionSheet知道哪个collectionView单元格被长按?我尝试将indexPath.row添加到单元格的标记中,但是当项目被删除时,标记不再正确。我试过[collectionView reloadData],但这引起了一些奇怪的视觉效果。有更好的解决方案吗? - Typhoon101
您可以像这样获取索引路径: NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:[gesture locationInView:self.collectionView]];。猜猜你能做到这一点吗? :) - Guido Hendriks
确实如此。我有很多东西需要学习!再次感谢。 - Typhoon101
Longpress + actionsheet是执行此操作的优雅方式。谢谢。 - GeneCode
@GeneCode这也是一个很好的方式。这取决于你的用例更适合。如果您正在使用编辑模式,则无需长按。 - Guido Hendriks


答案:


编辑项目 UICollectionViews并没有像在a中完成那样完成 UITableView。在表格视图中,有一个编辑模式,它将显示删除按钮。但是对于收藏视图,你必须自己处理。

最初,我这样解决了:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {   
    if (self.editing) {
        // Open an action sheet with the possible editing actions
    }
}

但之后我删除了编辑按钮并添加了一个 UILongPressGestureRecognizer 到了 UICollectionView。当长按一个项目我显示 UIActionSheet 这显示了可能的行动。

其中一个选项可能适合您。


13
2017-10-08 12:57



谢谢GuidoH。我沿着UILongPressGestureRecognizer路线走了,这很有效.......差不多!如何让UIActionSheet知道哪个collectionView单元格被长按?我尝试将indexPath.row添加到单元格的标记中,但是当项目被删除时,标记不再正确。我试过[collectionView reloadData],但这引起了一些奇怪的视觉效果。有更好的解决方案吗? - Typhoon101
您可以像这样获取索引路径: NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:[gesture locationInView:self.collectionView]];。猜猜你能做到这一点吗? :) - Guido Hendriks
确实如此。我有很多东西需要学习!再次感谢。 - Typhoon101
Longpress + actionsheet是执行此操作的优雅方式。谢谢。 - GeneCode
@GeneCode这也是一个很好的方式。这取决于你的用例更适合。如果您正在使用编辑模式,则无需长按。 - Guido Hendriks


您的代码定义了集合视图中的单元格。您可以将删除图标/按钮添加到数据源提供的单元格的contentView中。


0
2017-10-08 13:14