我有一个用动态创建的部分填充 UITableView 的项目。一切正常,我能够按预期在每个部分中添加和删除对象。
该脚本当前设置为在删除该部分的所有成员时从 TableView 中删除该部分。这也很好,除非我去删除列表中的最后一个单元格,删除最后一个部分会产生一个奇怪的动画错误。部分/单元格删除动画按预期播放,但分隔线跳到部分标题的高度并且重叠看起来很糟糕。屏幕截图不适合我用我的手机拍摄的视频,提前为质量道歉。该视频显示前两个删除正常工作,然后是第三个和最后一个动画问题。
http://www.youtube.com/watch?v=eE0j5tCSRIQ
处理删除的代码如下:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
//Set active floor key
NSObject *key = [[[[self patientList] allKeys]sortedArrayUsingSelector:@selector(compare:)]objectAtIndex: indexPath.section];
[[self tableView]beginUpdates];
//Delete
[[self managedObjectContext]deleteObject:[self getPatientFromIndexPath: indexPath]];
[[[self patientList]objectForKey: key]removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
//Save
[[self managedObjectContext]save: nil];
//Delete section if no patients left
if ([[[self patientList]objectForKey: key]count] == 0) {
[[self patientList]removeObjectForKey:key];
[tableView deleteSections:[NSIndexSet indexSetWithIndex: indexPath.section] withRowAnimation:(UITableViewRowAnimationFade)];
}
[[self tableView]endUpdates];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
找不到任何关于此的信息,而且我是 iOS 编程的新手,所以我很茫然。