我有一个 UITableView,它显示了用户保存的 pdf 文件列表(来自 Documents 文件夹)。
当我尝试删除表中唯一的行时,它工作正常。
但是当行多于一时,我尝试删除第三行,例如,我得到..
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (2), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
现在,我尝试检查我的数组计数是否 > 0,在这种情况下,我删除了行,否则删除了 indexSet,但没有任何运气。
这是我正在使用的代码
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
NSError *error;
NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory
stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",[self.pdfArray objectAtIndex:indexPath.row]]];
if ([fileMgr removeItemAtPath:filePath error:&error] != YES)
{ UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:NSLocalizedString(@"UnableToDeleteFile", @"Unable to delete file: %@"),[error localizedDescription]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil] autorelease];
[alert show];
}
[self.pdfArray removeObjectAtIndex:indexPath.row];
[self refreshTable];
[tableView endUpdates];
}
[self.tableView reloadData];
}
其中 [self refreshTable] 显示带有标签的视图,表明没有保存 PDF:
- (void) refreshTable {
[self fillArray];
[self.tableView reloadData];
if (self.pdfArray.count == 0)
{
[UIView animateWithDuration:1.0f animations:^{
noPDF.view.alpha = 1;
}];
self.navigationItem.rightBarButtonItem = nil;
self.tableView.userInteractionEnabled = NO;
}
else
{
noPDF.view.alpha = 0;
self.navigationItem.rightBarButtonItem = self.editButtonItem;
self.tableView.userInteractionEnabled = YES;
}
}
现在,我实际上无法解决这个问题,所以,非常感谢任何帮助!