我有2个像这样的集合视图:
第一个是专辑的集合视图,第二个是每个专辑中照片的集合视图。
数据来自服务器。我想将一些照片从AlbumA移动到AlbumB。
我试过这样的话:
if response != nil {
// Update UI Move photo from AlbumA to AlbumB
// Get all images from albumA
var sourceImages: [UIImage] = []
for i in 0..<self.checkSelectedImages[self.selectedAlbumIndex].count {
if self.checkSelectedImages[self.selectedAlbumIndex][i] == false {
let cell = self.imageCollectionView.cellForItemAtIndexPath(NSIndexPath(forRow: i, inSection: 0)) as! ODIProfileMovePhotoImageCell
let sourceImage = cell.imageView.image
self.imageCollectionView.deleteItemsAtIndexPaths([NSIndexPath(forRow: i, inSection: 0)])
sourceImages.append(sourceImage!)
self.imageCollectionView.reloadData()
}
}
// Send those above images to AlBumB
for i in 0..<sourceImages.count {
self.imageCollectionView.insertItemsAtIndexPaths([NSIndexPath(forRow: i, inSection: 0)])
}
self.imageCollectionView.reloadData()
}
和numberOfItemsInSection:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView == self.albumCollectionView {
return listData.count + 1
}
else if collectionView == self.imageCollectionView {
if listData.count > 0 {
if selectedAlbumIndex > 0 {
return listData[selectedAlbumIndex - 1].photos.count
} else {
return thumbnailImagesFromPhotoLibrary.count
}
}
}
return thumbnailImagesFromPhotoLibrary.count
}
但它在这一行崩溃了:
self.imageCollectionView.deleteItemsAtIndexPaths(indexPaths!)
它说:
由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:'无效更新:无效 第0节中的项目数。包含在项目中的项目数 更新后的现有部分(14)必须等于数量 更新前的该部分中包含的项目(14),加号或减号 从该部分插入或删除的项目数(0已插入, 1删除)并加上或减去移入或移出的项目数 该部分(0移入,0移出)。'
如何解决这个问题?
答案 0 :(得分:5)
您应首先从数组中删除元素,然后从UICollectionView
中删除。
如果您使用checkSelectedImages
来计算某个部分中的部分或项目数,请先从中删除该元素。