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

Iphone 如何在collectionView中重新加载补充视图,iphone,ios,objective-c,ipad,Iphone,Ios,Objective C,Ipad,是否有一种简单的方法可以仅在UICollectionViewFlowLayout中重新加载辅助视图?我不想重装整个东西。是否可以这样做?查看文档后,我不确定是否要重新加载单个补充视图,但您可以使用重新加载节:更新UICollectionView中的一个或多个节。()因此,当节头需要更新时,可以调用: 目标C: [self.collectionView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)]]

是否有一种简单的方法可以仅在UICollectionViewFlowLayout中重新加载辅助视图?我不想重装整个东西。是否可以这样做?

查看文档后,我不确定是否要重新加载单个补充视图,但您可以使用
重新加载节:
更新UICollectionView中的一个或多个节。()因此,当节头需要更新时,可以调用:

目标C:

[self.collectionView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)]];
斯威夫特:

self.collectionView?.reloadSections(IndexSet(0 ..< 3))

如果要从控制器更改辅助视图的布局或大小,请使用
[self.collectionView.collectionViewLayout invalidateLayout]
。如果只想刷新辅助视图,请使用
[supplementaryView setNeedsDisplay]
。如果补充视图很复杂和/或将更改其维度,请同时使用这两种方法。

看到了许多答案,这对我来说最适合由NSFetchedResultsController支持collectionview。Thanks@Vitalii,请参阅我的修订版,以获得对objective-c代码更好的逼真度(使用范围而不是数组)。此外,collectionView在
UICollectionViewFlowLayout
中是可选的。我可以确认
setNeedsDisplay()
可以工作,特别是在您需要更改视图样式(如颜色、文本、图像等)时。如果您的viewcontroller使用
UICollectionViewDataSource
协议,使用
viewForSupplementalElementOfKind
方法将
IndexPath
对象保存到viewcontroller变量,然后使用
yourCollectionView.supplementaryView()
获取它以刷新视图
- (UICollectionReusableView *)collectionView: (UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {

       //Place logic for handling update here...
}