在UICollectionView中删除单元格

时间:2014-04-27 09:23:03

标签: ios uitableview uicollectionview

我想删除UICollectionview中的单元格,就像我在UITableview中一样。

使用UITableview,我这样做了:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:folder];
        NSArray *fileListAct = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:dataPath error:nil];
        NSString *dataFile = [dataPath stringByAppendingPathComponent:[fileListAct objectAtIndex:indexPath.row]];


        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager removeItemAtPath:dataFile error:NULL];

        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
        [self.tableView reloadData];
    }

}

我想在UICollectionview中实现同样的目标。我这样开始,但它不起作用:

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath{

    if (editActive) {
        NSLog(@"EditCalled");
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:folder];
        NSArray *fileListAct = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:dataPath error:nil];
        NSString *dataFile = [dataPath stringByAppendingPathComponent:[fileListAct objectAtIndex:indexPath.row]];

        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager removeItemAtPath:dataFile error:NULL];

        [collectionView deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];

        [self.collectionView reloadData];
    }

}

错误是:

  

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第0部分中的无效项目数。更新后现有部分中包含的项目数(3)必须等于项目数在更新(3)之前包含在该部分中,加上或减去从该部分插入或删除的项目数(插入0,删除1),加上或减去移入或移出该部分的项目数量(0移入,0搬出去。'

修改

我发现了这个问题。

我用过

- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath

而不是

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

愚蠢的错字。

0 个答案:

没有答案