invalidateLayout with invalidateSupplementaryElements和UICollectionViewLayoutInvalidationContext

Jac*_*man 7 ios swift

我正在尝试刷新页脚(supplementElement).我正在使用-invalidatelayout方法.根据这里的 SO建议.Apple文档在这里.我收到以下错误

***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'发送到的无效的上下文() - [UICollectionViewFlowLayout invalidateLayoutWithContext:]不是UICollectionViewFlowLayoutInvalidationContext类型的实例或子类'

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

看起来invalidateLayout方法期望UICollectionViewFlowLayoutInvalidationContext而不是UICollectionViewLayoutInvalidationContext.

我正在使用Xcode 8和Swift 3.

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

在此输入图像描述

"下一步"是具有自定义类"ActivitiesSelectMembersFooterView"的页脚

jam*_*esk 7

错误消息准确描述了该问题.调用invalidateLayout(with:)UICollectionViewFlowLayout对象时,需要传递UICollectionViewFlowLayoutInvalidationContext的实例.

改变这一行:

let footer_context = UICollectionViewLayoutInvalidationContext()
Run Code Online (Sandbox Code Playgroud)

对此:

let footer_context = UICollectionViewFlowLayoutInvalidationContext()
Run Code Online (Sandbox Code Playgroud)