我想删除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
愚蠢的错字。