Способ приблизиться к этому состоит в том, чтобы сказать tableView удалять и добавлять строки и разделы с
insertRowsAtIndexPaths:withRowAnimation:
, deleteRowsAtIndexPaths:withRowAnimation:
, insertSections:withRowAnimation:
и deleteSections:withRowAnimation:
методы UITableView. При вызове этих методов таблица анимирует в / объектах, которые Вы запросили, затем назовите reloadData на себе так, можно обновить состояние после этой анимации. Эта часть важна - если Вы анимируете далеко, почти не изменяют данные, возвращенные источником данных таблицы, строки появятся снова после того, как анимация завершается.
Так, Ваш поток приложения был бы:
[self setTableIsInSecondState:YES];
[myTable deleteSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES]];
, пока методы источника данных Вашей таблицы возвращают корректный новый набор разделов и строк путем проверки [self tableIsInSecondState]
(или безотносительно), это достигнет эффекта, который Вы ищете.
Я считаю, что вы можете просто обновить структуру данных, а затем:
[tableView beginUpdates];
[tableView deleteSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES];
[tableView insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES];
[tableView endUpdates];
Кроме того, withRowAnimation - это не совсем логическое значение, а стиль анимации:
UITableViewRowAnimationFade,
UITableViewRowAnimationRight,
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone,
UITableViewRowAnimationMiddle