Как узнать, когда [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.