我有以下几行代码:
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[tableViewData removeObjectAtIndex:indexPath.row]; // Step 1
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationFade]; // Step 2
if (!queue_C5K) { // Step 3
LockrNotificationDataKeeper *LLDK =
[[LockrNotificationDataKeeper alloc] initWithData:@"##deletion##"
andIndexPath:(int)indexPath.row
andType:@"dR"
delegate:self];
[queue_C5K addOperation:LLDK];
}
}
}
所以我从步骤1中的当前UITableViewCell
数据中删除了选定的UITableView
。在第2步中,应该animation
。在步骤3中,将从datasource
(plist)中删除所选数据。第3步的回调将重新加载UITableView
。
问题是,只有最后一个UITableViewCell
会被动画删除。所有上层UITableViewCells
都没有。因此,如果我有5个单元格,则前4个单元格在删除时不会有任何动画。
我做错了什么?
答案 0 :(得分:2)
The callback of Step 3 will reload my tableView.
你打电话给[tableView reloadData]
吗?在调用deleteRowsAtIndexPaths
之后,在淡入淡出动画时间内,如果您调用reloadData
,将覆盖淡入淡出动画,然后您就可以删除任何淡入淡出结果。因为reloadData不会影响已删除数据的最后一行,所以最后一行单元格具有淡入淡出动画。