Перетаскивание между представлениями коллекции вызывает сбой утверждения
Я использую 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)
. Нет никаких подсказок анимации, но контент успешно удален.