前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS开发:UICollectionViewCell删除的实现方法

iOS开发:UICollectionViewCell删除的实现方法

原创
作者头像
三掌柜
发布2021-12-03 01:04:23
2.1K0
发布2021-12-03 01:04:23
举报
文章被收录于专栏:三掌柜的技术空间

前言

在iOS开发过程中,UICollectionView的使用仅次于UITableView的使用,而且UICollectionView的使用也很重要,需要很好的运用掌握相关知识点。本篇博文就来讲解一下UICollectionView使用中,删除UICollectionViewCell的步骤方法,仅供参考。

使用场景:在UICollectionView的cell中,点击长按手势删除列表中的其中一个UICollectionViewCell的方法。具体实现步骤如下所示。

1、数据源,创建数组

声明一个全局的可变数组属性,并初始化这个可变数组。

代码语言:javascript
复制
//声明属性
@property (strong, nonatomic) NSMutableArray *dateSource;
//初始化可变数组
self.dateSource = [NSMutableArray new];
//给可变数组赋值
NSArray *customArr = @[@"95",@"95",@"90",@"90",@"95",@"85"];
_dateSource = [NSMutableArray arrayWithArray:customArr];

2、在UICollectionView代理方法cellForItemAtIndexPath:中给UICollectionViewCell添加长按手势,添加长按手势的时候需要添加代理方法

代码语言:javascript
复制
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:selfaction: @selector(handleLongPress:)];
longPressRecognizer.minimumPressDuration = 1.0f; // 触发长按事件时间为1.0秒
longPressRecognizer.delegate = self;
longPressRecognizer.view.tag = indexPath.row;
[cell addGestureRecognizer:longPressRecognizer];

3、声明一个全局属性selectedIndexPath,来标记选中的cell

代码语言:javascript
复制
@property (strong, nonatomic) NSIndexPath *selectedIndexPath; //cell点击标记

4、在UICollectionView代理方法didSelectItemAtIndexPath:中获取被点击选中的NSIndexPath,给selectedIndexPath赋值

代码语言:javascript
复制
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
  [collectionView deselectItemAtIndexPath:indexPath animated:YES];
_selectedIndexPath = indexPath; // 赋值
[_collectionView reloadData];
}

5、实现长按cell删除数据,在长按点击手势事件里面进行操作

代码语言:javascript
复制
- (void)handleLongPress:(UILongPressGestureRecognizer *)recognizer {
 if (recognizer.state == UIGestureRecognizerStateBegan) {
 if (_customArr.count == 0) {
 return;
        }
[_dateSource removeAllObjects];
[_dateSource removeObjectAtIndex:recognizer.view.tag]; //删除数据源
[_collectionView deleteItemsAtIndexPaths:@[indexPath]]; //删除操作
[_collectionView reloadData]; //刷新
}else if (recognizer.state == UIGestureRecognizerStateEnded) {
        NSLog(@"结束触发长按操作");
}
}

通过以上的步骤,大概演绎了一个简单的删除UICollectionViewCell的方法,如有疑问随时交流。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 1、数据源,创建数组
      • 2、在UICollectionView代理方法cellForItemAtIndexPath:中给UICollectionViewCell添加长按手势,添加长按手势的时候需要添加代理方法
        • 3、声明一个全局属性selectedIndexPath,来标记选中的cell
          • 4、在UICollectionView代理方法didSelectItemAtIndexPath:中获取被点击选中的NSIndexPath,给selectedIndexPath赋值
            • 5、实现长按cell删除数据,在长按点击手势事件里面进行操作
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档