[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:row inSection:0]]
withRowAnimation:UITableViewRowAnimationNone];
If you update the UITableView's dataSource and call [tableView reloadData]
instead of manually inserting the row, the table will refresh without any 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];
});
Swift example (from my chat)
UIView.performWithoutAnimation {
messagesTable.insertRows(at: [IndexPath(row: messages.count - 1, section: 0)], with: .none)
}
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.