如何从 collectionview 重新加载部分

How to reload section from collectionview

我尝试使用 didSelect 方法从 collectionview 中删除一个单元格。

删除数据效果很好。

但我得到了这个:

reason: 'Invalid update: invalid number of sections. The number of sections contained in the collection view after the update (1) must be equal to the number of sections contained in the collection view before the update (2), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted).'

这是删除单元格函数:

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
         }
}

我只想重新加载部分的数量。我应该添加什么?

问题是您只是从 section 中删除了一个 cell,这肯定行不通。

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

您需要先更新数据源,然后再调用:

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

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

那么你可以这样做:

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