Как узнать, когда анимация UITableView закончилась?

Как я могу узнать, когда [UITableView setEditing: YES animated: YES] завершился?

Я не хочу давать никакого контекста, потому что я хочу, чтобы кто-нибудь не предлагал мне обходные пути, которые не интересует меня.

Я хочу вызвать вышеупомянутое, а затем вызвать отдельную функцию, когда анимация будет завершена.


Я отредактировал сообщение, чтобы дать контекст и некоторые обходные пути. Первоначально я установил Редактирование и немедленно перезагрузил данные таблицы.

[tableView setEditing:YES animated:YES];
[tableView reloadData];

Проблема в том, что таблица перезагружается до начала анимации, и поэтому анимация никогда не отображается.

Вот несколько различных обходных путей:

[tableView setEditing:YES animated:YES];
[self performSelector:@selector(ReloadTable) withObject:nil afterDelay:1.0];

Это работает, но если я получить неправильную задержку, тогда это будет плохо выглядеть. Поэтому мне нужно знать, что такое задержка, что я могу понять, но мы не уверены, что задержка всегда будет одинаковой.

isEditing = YES;
[tableView reloadData];
[tableView setEditing:YES animated:YES];

Это может сработать, но таблица ведет себя по-разному в зависимости от того, находимся ли мы в режиме редактирования . Поэтому я должен использовать свою собственную переменную isEditing вместо стандартной UITableView.editing. Я бы предпочел не создавать новую логическую переменную isEditing.

[tableView setEditing:YES animated:YES];
[tableView insertRowsAtIndexPaths:path withRowAnimation:UITableViewRowAnimationTop];

Это почти работает, но в режиме редактирования первая строка должна иметь UITableViewCellEditingStyleInsert, а другие строки - UITableViewCellEditingStyleDelete. И с помощью приведенного выше кода стиль редактирования устанавливается ДО добавления строки. Следовательно, вторая строка заканчивается UITableViewCellEditingStyleInsert.

17
задан jriggs 26 August 2011 в 23:40
поделиться