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
方法解决了动画问题