我有一个存储在图片数组中的20个项目的集合视图。我正在使用以下代码删除所选项目:
func deleteItemsAtIndexPaths(indexPaths:[NSIndexPath]){
for indexPath in indexPaths{
pictures.removeAtIndex(indexPath.item)
}
}
这是picturesObject的deleteItemsAtIndexPaths:
的实现 func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
collectionView.allowsMultipleSelection = true
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return picturesObject.pictures.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! ShopCell
cell.imageView.image = picturesObject.pictures[indexPath.item]
return cell
}
我面临的问题如下。每次删除集合视图中的选定项目时,图片数组都会变小。如果我删除第一项,那么图片数组只有19项大项。如果我尝试在集合视图中删除项目编号20,则数组索引超出范围,因为图片数组现在只有19个对象大,但我想删除存储在indexpath.item中的最20个对象。
在集合视图中删除项目的正确方法是什么?
编辑:///集合视图方法
foreach (CubeWrapper wrapper in mWrappers) {
var name = "w" + (i+1).ToString();
var value = this.GetType().GetProperty(name).GetValue(this);
wrapper.setWord(value);
}
答案 0 :(得分:3)
在deleteItemsAtIndexPaths
中循环播放数组之前,请按降序对indexPaths
进行排序。然后,如果删除项目编号19,则删除的下一个保证小于19。