重新加载collectionview单元格而不是节标题

时间:2018-01-20 00:31:33

标签: ios swift uicollectionview

尝试创建可折叠的UICollectionView部分时,我会根据其状态更新部分中的项目数。但是,这样做,我重新加载也重新加载节标题的部分,并且在部分标题中动画我的图像时,我得到一个非常奇怪的行为。

本质上,在更改节项目时重新加载节标题可以使UICollectionView更新项目,但是动画部分看起来很奇怪。 在不调用reloadSection的情况下,它允许正确的动画但不加载项目。

self?.collectionView?.performBatchUpdates({ 
   let indexSet = IndexSet(integer: section)
   self?.collectionView?.reloadSections(indexSet) 
}, completion: nil)

对此有什么解决方法?

1 个答案:

答案 0 :(得分:1)

您可以尝试在特定部分中提取IndexPath的序列,然后按此顺序调用reloadItems,这样做:

extension UICollectionView {
   func reloadItems(inSection section:Int) {
      reloadItems(at: (0..<numberOfItems(inSection: section)).map {
         IndexPath(item: $0, section: section)
      })
   }
}

所以你的代码可能是这样的:

var updateSection = 0 // whatever
collectionView.performBatchUpdates({
    // modify here the collection view
    // eg. with: collectionView.insertItems
    // or: collectionView.deleteItems
}) { (success) in
    collectionView.reloadItems(inSection: updateSection)
}