2016-11-20 76 views
4

我想刷新頁腳(supplementaryElement)。我正在使用-invalidatelayout方法。基於SO建議here。 Apple文檔here。我收到以下錯誤invalidateLayout with invalidateSupplementaryElements和UICollectionViewLayoutInvalidationContext

***終止應用程序由於未捕獲的異常「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和斯威夫特3.

我在Xcode故事板是在這裏 -

enter image description here

「下一步」,是具有自定義類 「ActivitiesSelectMembersFooterView」

回答

4
頁腳

錯誤消息準確地描述了問題。在UICollectionViewFlowLayout對象上調用invalidateLayout(with:)時,您需要傳遞一個UICollectionViewFlowLayoutInvalidationContext的實例。

改變這一行:

let footer_context = UICollectionViewLayoutInvalidationContext() 

要這樣:

let footer_context = UICollectionViewFlowLayoutInvalidationContext()