Hier sind zwei Möglichkeiten, wie Sie es tun könnten.
1. Erstellen Sie ein veränderbares Modell, um die möglicherweise verfügbaren Daten zu sichern. Verwenden Sie KVO in der geerbten Klasse von UICollectionReusableView, um die Änderungen zu beobachten und die Headeransicht mit den neuen Daten zu aktualisieren, sobald sie verfügbar sind.
[model addObserver:headerView
forKeyPath:@"path_To_Header_Data_I_care_about"
options:(NSKeyValueObservingOptionNew |
NSKeyValueObservingOptionOld)
context:NULL];
dann Listener-Methode in Kopfansicht
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
2. Benachrichtigungs-Listener zu der Ansicht Additions- und eine Benachrichtigung hinterlassen, wenn die Daten erfolgreich zur Verfügung gekommen sind. Nachteil ist, dass dies eine breite Anwendung und kein sauberes Design ist.
// 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];
Ich habe nicht verwendet KVO, aber ich habe für Aktualisierungen der Daten, stellen Sie die Felder auf meiner benutzerdefinierten Header-Klasse und rief setNeedsDisplay auf sie zugehört, aber nichts geändert . Ich habe mehr Probleme damit, den Header zu aktualisieren, als ich mit der Architektur bin, wie ich ihn aktualisiere. – akaru
Haben Sie versucht, invalidateLayout aufzurufen. Aktualisiert das Ihre Kopfzeile? – Samuel
das hat auch nicht funktioniert. – akaru