Я пытаюсь удалить ячейку из своего UICollectionView. Я использую настраиваемый макет, и удаление происходит в ответ на длинный распознаватель жестов нажатия, который я добавил в представление коллекции. Из того, что я прочитал, мне нужно сначала обновить источник данных, а затем удалить ячейки, что я и делаю. Все идет гладко до self.collectionView?.deleteItemsAtIndexPaths([indexPath])
. Я получаю сообщение об ошибке:UICollectionView Cell Deletion
*** Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «UICollectionView получил атрибуты макета для ячейки с отсутствием пути указателя: {length = 2, path = 0 - 0} '
Я читал другие подобные вопросы, но не могу заставить его работать.
let book = self.booksForCurrentAuthor[indexPath.row]
self.booksForCurrentAuthor.removeAtIndex(indexPath.row)
self.collectionView?.deleteItemsAtIndexPaths([indexPath])
//Delete book from database
Редактировать
Я не думаю, что это имеет отношение, но в моем объекте пользовательский макет, создать тайник UICollectionViewLayoutAttributes
из внутри метода prepareLayout()
. Кэш - это словарь с отдельными массивами для атрибутов заголовков, ячеек, нижних колонтитулов и декораций.
Просто предложение: используйте 'indexPath.item', когда вы используете UICollectionView. –
Сделано изменение - есть ли функциональная разница при использовании несколько стандартного вида просмотра коллекций? – cweber105
Нет. Оба являются вспомогательными устройствами доступа для второго индекса в пути. –