Ecco due modi per farlo.
1. Creare un modello mutabile per ripristinare i dati che saranno eventualmente disponibili. Utilizzare KVO nella classe ereditata di UICollectionReusableView per osservare le modifiche e aggiornare la vista dell'intestazione con i nuovi dati non appena disponibili.
[model addObserver:headerView
forKeyPath:@"path_To_Header_Data_I_care_about"
options:(NSKeyValueObservingOptionNew |
NSKeyValueObservingOptionOld)
context:NULL];
quindi implementare il metodo ascoltatore in vista di testa
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
2. aggiungere ascoltatore notifica alla vista e inviare una notifica quando i dati è venuto con successo disponibili. Il rovescio della medaglia è che questa è un'applicazione ampia e non un design pulito.
// 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];
non ho usato KVO, ma ho ascoltato per gli aggiornamenti dei dati, impostare i campi mia classe intestazione personalizzata, e chiamato setNeedsDisplay su di esso, ma non è cambiato nulla . Sto avendo problemi di più nell'ottenere l'intestazione per rinfrescarsi rispetto a me con l'architettura su come aggiornarlo. – akaru
Hai provato a chiamare invalidateLayout. Aggiorna la tua intestazione? – Samuel
che non ha funzionato neanche. – akaru