iOS:UITableViewRowAnimationFade无法正常工作

时间:2014-03-12 14:31:28

标签: ios uitableview tableview

我有以下几行代码:

- (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个单元格在删除时不会有任何动画。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

The callback of Step 3 will reload my tableView. 

你打电话给[tableView reloadData]吗?在调用deleteRowsAtIndexPaths之后,在淡入淡出动画时间内,如果您调用reloadData,将覆盖淡入淡出动画,然后您就可以删除任何淡入淡出结果。因为reloadData不会影响已删除数据的最后一行,所以最后一行单元格具有淡入淡出动画。