UITableViewRowAnimation仅适用于要删除的底部单元格

时间:2013-11-06 20:41:28

标签: ios objective-c uitableview animation

我无法让我的表格视图单元格在删除时显示动画。显示任何动画的唯一单元格是底部单元格,无论表格视图行数有多大或多小,都始终为底部单元格。我有一个分组表视图单元格,如果这有任何区别。我尝试过多种方法,例如使用[tableView beginUpdates& [tableView endUpdates块以及我在网上找到的代码:

[UIView beginAnimations:@"myAnimationId" context:nil];

[UIView setAnimationDuration:10.0]; // Set duration here

[CATransaction begin];
[CATransaction setCompletionBlock:^{
    NSLog(@"Complete!");
}];

[myTable beginUpdates];
// my table changes
[myTable endUpdates];

[CATransaction commit];
[UIView commitAnimations];

这就是我目前所拥有的:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        NSLog(@"Recent: %@", self.recentSearchesArray[indexPath.row][0]);

        NSMutableArray *tempMutableArray = [[NSMutableArray alloc] initWithArray:self.recentSearchesArray];
        [tempMutableArray removeObjectAtIndex:indexPath.row];
        self.recentSearchesArray = tempMutableArray;
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

        self.recentSearchesArray = tempMutableArray;   
    }
    [self.tableView reloadData];
}

任何人都知道我做错了什么或如何解决这个问题?我感谢任何帮助和指导。提前致谢。

1 个答案:

答案 0 :(得分:0)

如何重新加载唯一的单元格

[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];

以上应该有效我觉得问题出在下面的代码中

原始代码

NSMutableArray *tempMutableArray = [[NSMutableArray alloc] initWithArray:self.recentSearchesArray];
[tempMutableArray removeObjectAtIndex:indexPath.row];
self.recentSearchesArray = tempMutableArray;

它应该只是

[self.recentSearchesArray removeObjectAtIndex:indexPath.row];