I have problems using this UITableView method:
- (void)deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation
First the documentation says:
animation:
YES to animate the deletion of sections, otherwise NO.
But the parameter animation is actually of type enum UITableViewRowAnimation
, not BOOL
!?
So how can I disable the animation? I've tried NO
and UITableViewRowAnimationNone
. Nothing works. The section deletion is always animated.
I know that I can use [tableView reloadData]
instead. That would solve my issue. I'm just curious if that is a known problem and if it is possible to disable animation with this tableview method.
Thanks!
About the YES/NO in the doc whereas the parameter is of type UITableViewRowAnimation, I guess this is a rest from an old version of the API where the parameter was a BOOL before. Anyway, the documentation is indeed wrong.
Don't hesitate to send a feedback to Apple for this (using the "It's good but…" link at the bottom of the doc)
It's kind of a hack but this gets rid of the insert animation:
[UIView setAnimationsEnabled:NO];
[self.tableView insertRowsAtIndexPaths:insertedIndexPaths withRowAnimation:UITableViewRowAnimationNone];
[UIView setAnimationsEnabled:YES];
Well, obviously the documentation is indeed buggy. The parameter you pass says how you animate the deletion. If you pass UITableViewRowAnimationNone
, the update happens instantly without animation. However, when you have a section below the one you delete, it will move upwards in an animated way.
You should try to make use of the animations. This way a user can see what happens.
I believe you need to embed the deleteSections
call inside a beginUpdates
block:
[tableView beginUpdates];
[tableView deleteSections:... withRowAnimation:... ];
[tableView endUpdates];
The documentation seems to say this anyway. I haven't tested this with UITableRowViewAnimationNone
though.