我有一个用例,我用UICollectionView
来显示照片。此集合视图具有显示照片计数的补充视图(标题)。
我的业务逻辑在某些时候需要从集合视图中insertItems(at:)
或removeItems(at:)
,因此需要重新加载补充视图以便更新照片计数。
我正在寻找一个通用的解决方案(UICollectionView
扩展会很有利),以便能够重新加载/刷新只是集合视图的补充视图。
我不希望解决方案:
我只需要触发func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView
的内容并重新绘制补充视图。
我试过这个,但它与通用NSException
崩溃了:
self.photosCollectionView.insertItems(at: [IndexPath(row: index, section:0)])
let context = UICollectionViewLayoutInvalidationContext()
context.invalidateSupplementaryElements(ofKind: UICollectionElementKindSectionHeader, at: [IndexPath(row: 0, section: 0)])
let layout = self.photosCollectionView.collectionViewLayout as? UICollectionViewFlowLayout
layout?.invalidateLayout(with: context)
答案 0 :(得分:1)
在插入项目方法和删除项目方法中,只需将计数分配给标题视图标签,这样您就不必重新加载集合视图
let headerView = collectionViewDemo.supplementaryView(forElementKind: UICollectionElementKindSectionHeader, at: [0,0]) as? DemoCollectionReusableView
headerView?.textLabel.text = self.count