Ich versuche den richtigen Weg zu finden, einen View-Controller zu benachrichtigen, dass er Daten vom Server basierend auf einer Aktion eines anderen View-Controllers abrufen soll.Wie kann ein View-Controller wissen, dass er Daten vom Server abrufen soll?
Zum Beispiel - eine Ansicht-Controller, der eine Liste von Tweets präsentiert und einen View-Controller, die dem Benutzer erstellen ein Tweet lässt. Nachdem der Benutzer einen Tweet erstellt hat, wird der Ansichtscontroller, der für verantwortlich war, der Tweet gelöscht und der Ansichtscontroller, der für den Tweet darstellt, sollte nun bewusst sein, dass es seine Daten vom Server neu laden sollte Um dem Benutzer den Tweet zu präsentieren, den er gerade erstellt hat.
Zuerst dachte ich NSNotificationCenter
ist der Weg zu gehen, aber nach einer wenig Forschung zu tun (vor allem this twitter discussion), fand ich, dass es empfohlen wird, um die Benachrichtigung Beobachter im viewDidDisappear
Methode der View-Controller zu entfernen, die in dem Szenario, das oben beschrieben wird, macht die Benachrichtigung unbrauchbar, weil der präsentierende View-Controller sich bereits von den Beobachtern der Benachrichtigung zu dem Zeitpunkt entfernen würde, zu dem er sie empfangen sollte (weil er durch den 'create tweet' View-Controller verborgen wird wodurch es viewDidDisappear
Methode wird aufgerufen).
Delegierung ist auch ein Problem hier, weil es möglicherweise andere Ansichtscontroller gibt, die auch wissen müssen, wann ein neuer Tweet erstellt wurde, um ihre Ansichten zu aktualisieren/Daten vom Server abrufen usw.
Aufgrund der Tatsache, dass der beschriebene Fluss sehr beliebt ist, dachte ich, es muss eine korrekte Weise, diese beiden Ansicht Controller kommunizieren auf eine Weise, die Sinn machen.
Irgendwelche Ideen?
Sie die Beobachter in dealloc Methode entfernen – heximal
Wäre es von NSNotificationCenter sein nicht falsch Nutzung? Gibt es potenzielle Probleme, die auftreten können? – Itamar
Ich sehe nichts kriminelles, außer die Geschäftslogik. – heximal