使用することもできます(怠惰な方法)
collectionView.collectionViewLayout.invalidateLayout() // swift
[[_collectionView collectionViewLayout] invalidateLayout] // objc
より複雑なのは、コンテキストを提供することです
collectionView.collectionViewLayout.invalidateLayout(with: context) // swift
[[_collectionView collectionViewLayout] invalidateLayoutWithContext:context] // objc
次に、コンテキストを自分で作成または構成して、何を更新する必要があるかを通知できます。UICollectionViewLayoutInvalidationContextを参照してください。
オーバーライドできる機能があります。
invalidateSupplementaryElements(ofKind:at:) // swift
もう 1 つのオプションは (正しいヘッダー/フッター/補足ビューを既に読み込んでいる場合)、次の関数のいずれかを使用して取得するよりも新しいデータでビューを更新することだけです。
supplementaryView(forElementKind:at:) // get specific one
visibleSupplementaryViews(ofKind:) // all visible ones
で表示されているセルについても同じことが言えますvisibleCells
。ビューを完全にリロードせずにビューを取得するだけの利点は、セルがその状態を保持することです。これは、セルをリロードした後にその状態が失われるため、スワイプを使用して削除/編集/などする場合、テーブル ビュー セルでは特に便利です。
狂信的だと感じる場合は、もちろん、ジェネリックを使用して特定の種類のセル/補足ビューのみを取得する拡張機能を作成することもできます
if let view = supplementaryView(forType: MySupplementaryView.self, at: indexPath) {
configure(view, at indexPath)
}
これは、例のビューをクラス名で登録/デキューする関数があることを前提としています。私はこれについてここに投稿しました