У меня есть UICollectionView с несколькими разделами. Представление коллекции позволяет пользователю перемещать несколько элементов из одного раздела в другой. Это работает так, что пользователь выбирает элементы, нажимает «переместить» и выбирает новый раздел.
Функция ниже делает движение. Он отлично работает, когда выбран только один элемент, и иногда работает, когда выбрано несколько элементов. Однако время от времени происходит сбой при перемещении нескольких предметов. Сбой происходит в функции pictureforItemAtIndexPath, и причина в том, что мой dataArray находится вне диапазона (dataArray - массив, предоставляющий данные для представления коллекции).
Я не уверен, что может быть не так и почему это иногда работает.
func movePictures(newCategory: String) {
if let selected = collectionView!.indexPathsForSelectedItems {
for indexPath in selected {
print("IndexPath is: \(indexPath)")
let currentPicture = dataSource.pictureForItemAtIndexPath(indexPath: indexPath)
currentPicture.pictureCategory = newCategory
let newSectionNumber = dataSource.getSectionNumber(sectionName: newCategory)
let newIndexPath = dataSource.getNewIndexPath(sectionNumber: newSectionNumber)
dataSource.moveItemAtIndexPath(from: indexPath, to: newIndexPath)
collectionView.moveItem(at: indexPath, to: newIndexPath)
}
self.deselectAllItems()
}
}
func pictureForItemAtIndexPath(indexPath: IndexPath) -> Picture {
return dataArray[indexPath.section][indexPath.item]
}