我为每个部分都有一个带有 supplementView 的uicollectionview。 在每个 supplementView 中,我有一些按钮。 在dataSource方法 collectionView:viewForSupplementaryElementOfKind:atIndexPath:我正在使用 indexPath.section 设置按钮标签。按下按钮时我制作了一些委托方法,并将节(button.tag)作为参数发送。
一切正常,但问题出现了:
我试过了:
哦..我使用 NSFetchedResultsController (委托)来插入和删除部分。
任何人都可以帮我吗?有没有办法只重新加载 supplementView ?这种情况还有其他方法吗?
谢谢!
答案 0 :(得分:11)
要重新加载补充视图,您可以使用-invalidateLayoutWithContext:
。
请参阅UICollectionViewLayoutInvalidationContext
和方法-invalidateSupplementaryElementsOfKind:atIndexPaths:
的文档(自iOS 8开始提供)。
答案 1 :(得分:6)
不是重新加载这些视图,而是获取对每个可见补充视图的引用以便您可以更改标记,这可能足以满足您的需求。
您可以使用一种简单的方法来执行此操作:
let supplementaryViews = collectionView.visibleSupplementaryViews(ofKind: "identifier")
https://developer.apple.com/documentation/uikit/uicollectionview/1618026-visiblesupplementaryviews