IOS UITable: как выполнить действие после завершения анимации таблицы - PullRequest
8 голосов
/ 08 июня 2011

Как я могу заставить действие предприниматься после завершения анимации UITableview?

Я пытаюсь уменьшить ячейку UITableview и удалить подпредставление ячейки, которое не видно после сжатия.Чтобы уменьшить ячейку, я вызываю [tableview beginUpdates] и [tableview endUpdates] и изменяю высоту ячейки, возвращаемую методом источника данных theheightForRowAtIndexPath UITableview.

Проблема в том, что мне нужен tableviewчтобы завершить сжатие, чтобы скрыть подпредставление, прежде чем я смогу удалить подпредставление.если я добавлю код для удаления подпредставления из ячейки сразу после (или до, или между ними) для вызова [tableview endUpdates], то подпредставление удаляется слишком рано (оно не ждет анимации), и это выглядит забавно.

Я думаю, я хотел бы иметь возможность настроить обратный вызов, который запускается после завершения анимации, и удалить подпросмотр в обратном вызове

Ответы [ 2 ]

19 голосов
/ 31 января 2013

Как насчет этого?

[CATransaction begin];

[CATransaction setCompletionBlock:^{
    // animation has finished
}];

[tableView beginUpdates];
// shrink the cells
[tableView endUpdates];

[CATransaction commit];
0 голосов
/ 08 июня 2011

Попробуйте использовать класс NSNotifications. Публиковать уведомления, когда что-то должно произойти, и позже, когда что-то произошло. Вы можете использовать bool в том же методе уведомления для переключения между «должно произойти» и «произошло».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...