Bar*_*obs 15 iphone cocoa-touch uitableview uikit
这个问题让我忙碌了好几个小时.我有两个部分,每个部分有一行.当我删除其中一个部分中的行时,它会抛出一个异常,说这是一个无效的更新(更新前后的行/部分数不相同).这是可以理解的,因为我删除了一节的最后一行,因此我删除了该节.问题是如何避免异常.
我的数据源一切正常.我检查并重新检查(相信我).
因此,正如线程的标题所述,如何在不获取异常的情况下删除节的最后一行?
谢谢,
巴特
Mas*_*aro 27
删除行时,此行是其中最后一行,您还需要删除该部分.基本上,您需要跟踪要删除的indexPaths(与行关联的索引)以及与需要删除的部分相关的索引,因为它们不再包含行.你可以这样做:
NSMutableIndexSet *indexes = [NSMutableIndexSet indexSet];
Run Code Online (Sandbox Code Playgroud)
每次从模型数组中删除与tableView的特定部分相关的对象时,检查数组计数是否为零,在这种情况下,向索引添加表示该部分的索引:
[array removeObjectAtIndex:indexPath.row];
if(![array count])
[indexes addIndex: indexPath.section];
Run Code Online (Sandbox Code Playgroud)
确定与要删除的行相关的所有indexPath,然后按如下所示更新tableView:
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[tableView deleteSections:indexes withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)
这对我和我建议采用这种方法的其他人有用.
归档时间: |
|
查看次数: |
7716 次 |
最近记录: |