如何从collectionview重新加载部分

Posted

技术标签:

【中文标题】如何从collectionview重新加载部分【英文标题】:How to reload section from collectionview 【发布时间】:2016-08-01 02:05:04 【问题描述】:

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

删除数据效果很好。

但我得到了这个:

原因:'无效更新:无效的节数。的数量 更新 (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 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
         

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

【问题讨论】:

【参考方案1】:

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

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

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

那么你可以这样做:

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

【讨论】:

【参考方案2】:

问题是您只是从section 中删除cell,这绝对行不通。

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

【讨论】:

以上是关于如何从collectionview重新加载部分的主要内容,如果未能解决你的问题,请参考以下文章

添加新数据时如何在保持秩序的同时重新加载collectionview

自定义 CollectionView 布局重新加载数据不起作用

CollectionView 标题在滚动时停止刷新/重新加载数据

如何在collectionView中重新加载补充视图

如何在不重新加载图像的情况下重新加载 collectionview 单元格

如何在不重新加载 visibleCell 的情况下在 collectionView 上重新加载数据