Uitableview ios 7删除表视图中的行时出现不稳定动画问题

Uitableview ios 7删除表视图中的行时出现不稳定动画问题,uitableview,ios7,uisearchbar,Uitableview,Ios7,Uisearchbar,我有一个带有搜索栏/显示控制器(全部内置故事板)的表视图。 我的问题是删除行。“删除行”功能正常,但行删除的动画似乎不稳定。有时删除会设置动画,而大多数情况下,行会立即删除,而不会设置动画 这是我的删除方法: - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPat

我有一个带有搜索栏/显示控制器(全部内置故事板)的表视图。 我的问题是删除行。“删除行”功能正常,但行删除的动画似乎不稳定。有时删除会设置动画,而大多数情况下,行会立即删除,而不会设置动画

这是我的删除方法:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        if (tableView == self.searchDisplayController.searchResultsTableView) {
            [_managedObjectContext deleteObject:[_notesFilteredFetcher objectAtIndexPath:indexPath]];
        } else {
            [_managedObjectContext deleteObject:[_notesFetcher objectAtIndexPath:indexPath]];
        }
        NSError *error;
        if (![_managedObjectContext save:&error]) {
            DLog(@"Failed deleting note : %@", [error localizedDescription]);
        }
    }
}
表视图正在使用核心数据,因此在相应控制器的方法中删除行,如下所示:

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {

    UITableView *tableView = (controller == _notesFilteredFetcher) ? self.searchDisplayController.searchResultsTableView : self.tableView;

    switch(type) {
        case NSFetchedResultsChangeInsert:
            [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
            break;

        case NSFetchedResultsChangeDelete:
            [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]withRowAnimation:UITableViewRowAnimationFade];
            break;

        case NSFetchedResultsChangeUpdate:
            [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath forTable:tableView];
            break;

        case NSFetchedResultsChangeMove:
            [tableView deleteRowsAtIndexPaths:[NSArray
                                               arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
            [tableView insertRowsAtIndexPaths:[NSArray
                                               arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
            break;
    }
}
我还注意到,当发生删除动画时,删除行上方的所有行都会向下移动一点,而删除行下方的行会向上移动,直到空白区域被覆盖

如果我查看内置的mail应用程序并删除一些行(即邮件),它似乎每次都像预期的那样进行动画处理,并且只有删除行下方的行向上移动以覆盖空白区域(删除行上方的行不移动)

有什么想法吗

更新:


我注意到动画只在最后一行出现。如果删除任何其他行,则不会出现动画,但如果删除最后一行,则动画不会工作

如果有人遇到同样的问题:

我注意到,在调用表视图的
endUpdates
之后,我调用了表视图的
reloadData
方法,因为我需要更新单元格的内部索引

这将导致动画立即停止。删除
reloadData
方法解决了动画问题