Имейте reloadData для UITableView, анимационного при изменении

172
задан Vertexwahn 4 March 2016 в 16:43
поделиться

2 ответа

Способ приблизиться к этому состоит в том, чтобы сказать tableView удалять и добавлять строки и разделы с

insertRowsAtIndexPaths:withRowAnimation:, deleteRowsAtIndexPaths:withRowAnimation:, insertSections:withRowAnimation: и deleteSections:withRowAnimation:

методы UITableView. При вызове этих методов таблица анимирует в / объектах, которые Вы запросили, затем назовите reloadData на себе так, можно обновить состояние после этой анимации. Эта часть важна - если Вы анимируете далеко, почти не изменяют данные, возвращенные источником данных таблицы, строки появятся снова после того, как анимация завершается.

Так, Ваш поток приложения был бы:

[self setTableIsInSecondState:YES];

[myTable deleteSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES]];

, пока методы источника данных Вашей таблицы возвращают корректный новый набор разделов и строк путем проверки [self tableIsInSecondState] (или безотносительно), это достигнет эффекта, который Вы ищете.

17
ответ дан iKenndac 23 November 2019 в 20:37
поделиться

Я считаю, что вы можете просто обновить структуру данных, а затем:

[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
60
ответ дан 23 November 2019 в 20:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: