[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]]
withRowAnimation:UITableViewRowAnimationNone];
When doing this every row after the one I'm inserting slides down. I want them to immediately jump to their new place. I don't want to call reloadData
since then all my cells would be redrawn.
Is it possible to remove this animation?
This works for me:
[UIView setAnimationsEnabled:NO];
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:indexPath
withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
[UIView setAnimationsEnabled:YES];
Hope this helps.
This also works
[UIView performWithoutAnimation:^{
[self.tableView insertRowsAtIndexPaths:indexPaths:withRowAnimation:UITableViewRowAnimationNone];
});
Unfortunately, I ran into this same issue and there was no way for me to remove the animation.
Must be a bug with the UITableViewRowAnimationNone animation type since iOS (of any version) does not seem to respect it.
Swift example (from my chat)
UIView.performWithoutAnimation {
messagesTable.insertRows(at: [IndexPath(row: messages.count - 1, section: 0)], with: .none)
}
If you update the UITableView's dataSource and call [tableView reloadData]
instead of manually inserting the row, the table will refresh without any animation.