带有 invalidateSupplementaryElements 和 UICollectionViewLayoutInvalidationContext 的 invalidateLayout

invalidateLayout with invalidateSupplementaryElements and UICollectionViewLayoutInvalidationContext

我正在尝试刷新页脚(supplementaryElement)。我正在使用 invalidatelayout 方法。基于 SO 建议 here. Apple documentation here

我收到以下错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'the invalidation context () sent to -[UICollectionViewFlowLayout invalidateLayoutWithContext:] is not an instance of type UICollectionViewFlowLayoutInvalidationContext or a subclass'

实现代码:

let footer_context = UICollectionViewLayoutInvalidationContext()
footer_context.invalidateSupplementaryElements(ofKind: "ActivitiesSelectMembersFooterView", at: [indexPath])
self.collectionView?.collectionViewLayout.invalidateLayout(with: footer_context)

看起来 invalidateLayout 方法需要 UICollectionViewFlowLayoutInvalidationContext 而不是 UICollectionViewLayoutInvalidationContext

我正在使用 Xcode 8 和 Swift 3。

我在 Xcode 中的故事板在这里 -

"Next" 是具有自定义 class "ActivitiesSelectMembersFooterView"

的页脚

错误消息准确地描述了问题。在 UICollectionViewFlowLayout 对象上调用 invalidateLayout(with:) 时,需要传递 UICollectionViewFlowLayoutInvalidationContext.

的实例

更改此行:

let footer_context = UICollectionViewLayoutInvalidationContext()

为此:

let footer_context = UICollectionViewFlowLayoutInvalidationContext()