Перетаскивание между представлениями коллекции вызывает сбой утверждения

Я использую UICollectionView перетаскивайте API для перетаскивания ячеек между представлениями коллекции, а также внутри одного представления коллекции.

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

... *** Assertion failure in -[UICollectionView _updateRowsAtIndexPaths:updateAction:updates:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore_Sim/UIKit-3901.4.2/UICollectionView.m:6265

Событие с его простейшей реализацией для dropSessionDidUpdate: это происходит:

func collectionView(_ collectionView: UICollectionView,
                    dropSessionDidUpdate session: UIDropSession,
                    withDestinationIndexPath destinationIndexPath: IndexPath?) -> UICollectionViewDropProposal {
    return .init(operation: .move, intent: .insertAtDestinationIndexPath)
}

Это всегда происходит, когда операция .move или .copy.

насколько я понимаю, это должно "просто работать" и dropSessionDidUpdate: должен обеспечивать приятную визуальную обратную связь о потенциальном падении здесь.

Стоит также отметить, что все представления коллекций используют один и тот же код (каждый UICollectionViewController одного типа).

Обновление 1

Кажется, это "работает" при возврате .init(operation: .move) без intentпараметр. Хотя анимации нет, данные перемещаются, а представление коллекции обновляется...

Обновление 2

Как и выше, это также работает при возврате .init(operation: .move, intent: .insertIntoDestinationIndexPath) или .init(operation: .move, intent: .unspecified). Нет никаких подсказок анимации, но контент успешно удален.

0 ответов

Другие вопросы по тегам