如何从collectionview重新加载部分

时间:2016-08-01 02:05:05

标签: swift xcode collectionview

我尝试在collectionview方法上从didSelect删除一个单元格。

删除数据效果很好。

但我得到了这个:

  

原因:'无效更新:无效的部分数量。的数量   更新(1)后包含在集合视图中的部分必须是   等于集合视图中包含的节数   在更新(2)之前,加上或减去插入的部分的数量   或删除(0插入,0删除)。'

这是删除单元格功能:

func deleteMovie(cell: MoiveCollectionViewCell) {
var indexPath: NSIndexPath = self.collectionView!.indexPathForCell(cell)!
 // remove and reload data
 self.collectionView.deleteItemsAtIndexPaths([indexPath])
 self.collectionView.reloadSections(NSIndexSet(index: indexPath.section))
}

numberOfSectionsInCollectionView func:

 func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    //number_per_section = 3 
    if manager.movie_List.count % number_per_section  == 0
    {
        return manager.movie_List.count / number_per_section
     }
    else {  
       return manager.movie_List.count / number_per_section  + 1
         }
}

我只是想重新加载一些部分。我应该添加什么?

2 个答案:

答案 0 :(得分:6)

在拨打电话之前,您需要先更新数据源:

 collectionView.deleteItemsAtIndexPaths([indexPath])
 collectionView.reloadSections(NSIndexSet(index: indexPath.section))

首先删除数据源模型中的对象(数组,字典等)。

然后你可以这样做:

 let indexSet = IndexSet(integer: indexPath.section)
 collectionView.reloadSections(indexSet)          

答案 1 :(得分:1)

问题是您只是从cell删除了section,这肯定无效。

删除cell后,您还需要通知manager.movie_List array。因此,从数组中删除selectedIndex数据然后尝试一下!