带有 invalidateSupplementaryElements 和 UICollectionViewLayoutInvalidationContext 的 invalidateLayout
Posted
技术标签:
【中文标题】带有 invalidateSupplementaryElements 和 UICollectionViewLayoutInvalidationContext 的 invalidateLayout【英文标题】:invalidateLayout with invalidateSupplementaryElements and UICollectionViewLayoutInvalidationContext 【发布时间】:2016-11-20 20:59:12 【问题描述】:我正在尝试刷新页脚 (supplementaryElement)。我正在使用invalidatelayout
方法。基于 SO 建议here。苹果文档here。
我收到以下错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无效上下文 () 送至 -[UICollectionViewFlowLayout invalidateLayoutWithContext:] 不是 UICollectionViewFlowLayoutInvalidationContext 类型的实例或 子类'
实现代码:
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”是具有自定义类“ActivitiesSelectMembersFooterView”的Footer
【问题讨论】:
【参考方案1】:错误消息准确地描述了问题。在 UICollectionViewFlowLayout 对象上调用invalidateLayout(with:)
时,需要传递UICollectionViewFlowLayoutInvalidationContext 的实例。
改变这一行:
let footer_context = UICollectionViewLayoutInvalidationContext()
到这里:
let footer_context = UICollectionViewFlowLayoutInvalidationContext()
【讨论】:
以上是关于带有 invalidateSupplementaryElements 和 UICollectionViewLayoutInvalidationContext 的 invalidateLayout的主要内容,如果未能解决你的问题,请参考以下文章
如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片
CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?
带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢