ここには2つの方法があります。
1. 最終的に利用可能なデータをバックアップするための変更可能なモデルを作成します。継承されたUICollectionReusableViewクラスでKVOを使用して変更を観察し、ヘッダービューを新しいデータで更新します。
[model addObserver:headerView
forKeyPath:@"path_To_Header_Data_I_care_about"
options:(NSKeyValueObservingOptionNew |
NSKeyValueObservingOptionOld)
context:NULL];
は次に
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
2.ビューに通知リスナを追加し、データが正常に使用可能来たときに通知をポストヘッダビューでリスナーメソッドを実装します。欠点は、これがアプリケーション全体であり、クリーンなデザインではないことです。
// place in shared header file
#define HEADER_DATA_AVAILABLE @"Header Data Available Notification Name"
// object can contain userData property which could hole data needed.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(headerDataAvailable:) name:HEADER_DATA_AVAILABLE object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:HEADER_DATA_AVAILABLE object:nil];
私はKVOを使用していませんでしたが、私は、データの更新のために耳を傾け、私のカスタムヘッダークラスのフィールドを設定し、その上にsetNeedsDisplayと呼ばれているが、何も変わっていません。私はそれを更新する方法を設計するよりも、自分自身をリフレッシュするためのヘッダーを取得することでさらに問題を抱えています。 – akaru
あなたはinvalidateLayoutを呼び出してみましたか?それはあなたのヘッダーをリフレッシュしますか? – Samuel
でも動作しませんでした。 – akaru