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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在编辑按钮上删除UICollectionView单元格相关的知识,希望对你有一定的参考价值。

我正在使用UICollectionView来检索存储在Cloud数据库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];
    }
}];
}
答案

看看这个答案有很多代码供您试用:https://stackoverflow.com/a/16190291/1914567

基本上,没有Apple提供的方法来做到这一点。

还有一些非常好的图书馆。我个人最喜欢的是DraggableCollectionView,还可以看看LXReorderableCollectionViewFlowLayout

另一答案
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    [[Singleton sharedSingleton].selectedProfileArray removeObjectAtIndex:indexPath.row];
    [selectCollectionView reloadData];
}

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

通过单选按钮更改 Jquery 表单提交

UICollectionViewCell - 编辑模式

滑动以在UICollectionView上显示其他按钮

在 Swift 中设置 UICollectionView 删除按钮

UICollectionview删除项目重新排列奇怪的动画

在 UICollectionView 中删除单元格后,如何更新作为 UICollectionViewCell 一部分的按钮标签?