删除编辑按钮上的 UICollectionView 单元格

Posted

技术标签:

【中文标题】删除编辑按钮上的 UICollectionView 单元格【英文标题】:Remove UICollectionView cells on edit button 【发布时间】:2015-02-26 17:03:12 【问题描述】:

我正在使用 UICollectionView 来检索存储在云数据库 Parse 中的图像和标签。

我现在需要一个选项,可以让我删除某个图像及其对应的标签。

我正在寻找诸如右上角的典型 iPhone“编辑”按钮之类的东西,该按钮显示滑动动画,单元格旁边有一个删除按钮。我知道这样的事情可以通过 UITableView 完成

[[self tableView] setEditing:YES animated:YES];

但我似乎无法在任何地方找到 UICollectionView 的等价物。

感谢任何帮助,即使它不处理 Parse 本身的删除,只是集合视图上的编辑样式是理想的。

这是我填充单元格的方式:

- (void)viewDidLoad

   [super viewDidLoad];
   [self retrieveSelectedImages];


-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
return 1;


-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
return [imageFilesArray count];



-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

static NSString *cellIdentifier = @"myRoomsCell";
MyRoomsCell *cell = (MyRoomsCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

PFObject *imageObject = [imageFilesArray objectAtIndex:indexPath.row];
PFFile *imageFile = [imageObject objectForKey:@"imageFile"];

cell.loadingSpinner.hidden = NO; //show loading spinner to indicate work is happening until the image loads
[cell.loadingSpinner startAnimating];

// UILabel *label = (UILabel*) [cell viewWithTag:5];
cell.label.text= [imageObject objectForKey:@"roomLabel"]; //set room label as the label stored on parse previously inserted by the user

cell.label.font = [UIFont fontWithName:@"Helvetica-Bold" size:18];
cell.label.textAlignment = NSTextAlignmentCenter;


[imageFile getDataInBackgroundWithBlock:^(NSData *data, NSError *error)

    if (!error) 
        cell.parseImage.image = [UIImage imageWithData:data];
        [cell.loadingSpinner stopAnimating];
        cell.loadingSpinner.hidden = YES;
    
];

return cell;


-(void) retrieveSelectedImages

//parse query where we search the favorites array column and return any entry where the array contains the logged in user objectid
PFQuery *getFavorites = [PFQuery queryWithClassName:@"collectionViewData"];
[getFavorites whereKey:@"selectedImage" equalTo:[PFUser currentUser].objectId];

[getFavorites findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) 
    if (!error)
    
        imageFilesArray = [[NSArray alloc] initWithArray:objects];
        [roomsCollection reloadData];
    
];

【问题讨论】:

【参考方案1】:

查看此答案,其中包含大量代码供您试用:https://***.com/a/16190291/1914567

基本上,没有 Apple 提供的方法来执行此操作。

还有一些非常不错的库。我个人最喜欢的是DraggableCollectionView,也可以查看LXReorderableCollectionViewFlowLayout。

【讨论】:

【参考方案2】:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 
    [[Singleton sharedSingleton].selectedProfileArray removeObjectAtIndex:indexPath.row];
    [selectCollectionView reloadData];

【讨论】:

以上是关于删除编辑按钮上的 UICollectionView 单元格的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell - 编辑模式

在编辑模式下删除表格行上的删除按钮⛔️

删除ThumbnailViewController PDFTron上的编辑按钮

在 Swift 中设置 UICollectionView 删除按钮

php 删除帖子/页面编辑屏幕上的添加图库按钮。

如何使用 MVVM 和 RxSwift 编辑/删除 UICollectionView 单元格