У меня есть UITableView, поддерживаемый NSFetchedResultsController, который может запускать обновления в любое время. Если пользователь в настоящее время переупорядочивает строки, применение этих обновлений вызовет исключение, потому что табличное представление временно вступило во владение, и вы получаете ошибку как
Invalid update: invalid number of rows in section [...]
Как я могу определить, когда пользователь начал перемещать ячейку, чтобы я мог отложить обновления, вызванные контроллером извлеченных результатов? Кажется, нет никаких методов делегата табличного представления, чтобы обнаружить это. Этот метод делегата:
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {
Не вызывается, когда пользователь первоначально отсоединяет первую ячейку, только когда он фактически перемещает ее в другое место.
Одним из решений является проверка isEditing
в полученных ответных колбэках результатов и просто выполнение объемной reloadData
вместо динамической вставки / удаления строк, но мне интересно, есть ли способ специально проверить «переупорядочение» режим.