Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UICollectionView:有没有办法只重新加载补充视图?_Ios_Objective C_Uicollectionview - Fatal编程技术网

Ios UICollectionView:有没有办法只重新加载补充视图?

Ios UICollectionView:有没有办法只重新加载补充视图?,ios,objective-c,uicollectionview,Ios,Objective C,Uicollectionview,我有一个uicollectionview和每个部分的补充视图。 在每个补充视图中,我都有一些按钮。 在dataSource方法collectionView:ViewForSupplmentalElementOfKind:atIndexPath:中,我正在使用indexPath.section设置按钮标记。我在按下按钮时创建了一些委托方法,并将部分(button.tag)作为参数发送 一切正常,但问题来了: 当我插入或删除一个分区时,它必须更新按钮标签,但我不想重新加载每个分区中的所有项目 我

我有一个uicollectionview和每个部分的补充视图。 在每个补充视图中,我都有一些按钮。 在dataSource方法collectionView:ViewForSupplmentalElementOfKind:atIndexPath:中,我正在使用indexPath.section设置按钮标记。我在按下按钮时创建了一些委托方法,并将部分(button.tag)作为参数发送

一切正常,但问题来了:

  • 当我插入或删除一个分区时,它必须更新按钮标签,但我不想重新加载每个分区中的所有项目
我试过:

  • 要使用dataSource方法collectionView:ViewForSupplementElementOfKind:atIndexPath:获取补充视图,并为每个补充视图调用layoutIfNeeded方法,以这种方式重新加载补充视图,但这种方法会使我的补充视图成倍增加
  • 在collectionView.subview中使用fast,只获取补充视图并调用layoutifneedd方法,但它不会重新加载,只会重新加载布局
  • reloadSections:方法,但这将重新加载节中的所有项
哦。。我使用NSFetchedResultsController(委托)插入和删除节

有人能帮我吗?有没有办法只重新加载补充视图?对于这种情况,还有其他方法吗


谢谢大家!

要重新加载补充视图,可以使用
-invalidateLayoutWithContext:


请参阅
UICollectionViewLayoutInvalidationContext
和方法的文档
-InvalidateSupplementElementSofKind:atIndexPaths:
(从iOS 8开始提供)。

获取对每个可见补充视图的引用,以便您可以更改标记,而不是重新加载这些视图

有一种简单的方法可用于执行此操作:

let supplementaryview=collectionView.visiblesupplementaryview(种类:“标识符”)


我解决了这个问题。我对补充视图使用自定义UICollectionViewLayoutAttribute,其中一个自定义属性是保留节的NSInteger,在NSFetchedResultsController委托方法controllerDidChangeContent中:插入或删除节后,我使集合视图布局无效。我不确定这是否是最佳实践,但它现在起作用了,时间也很重要:)在iOS 8和更高版本上可用。这是一个老问题,但很高兴知道未来类似的情况。谢谢知道如何让补充视图重新加载以使用invalidLayout设置动画吗?这实际上似乎并没有触发
collectionView(u∶ViewForSupplementalElementOfKind:)
API