Ich habe eine UITableView, die entfernte Daten aus dem Netzwerk lädt. Ich habe Logik in viewWillAppear, um die Daten zu aktualisieren, wenn sie aufgrund von Statusänderungen und einer TTL für den Datensatz benötigt werden. Dies funktioniert innerhalb einer App "Sitzung", ist aber nicht wirksam, wenn der Benutzer die App in den Hintergrund versetzt und später direkt in diese Ansicht zurückspeichert.
Was ich finde ist, dass, wenn die App in iOS4 in den Vordergrund zurückgesetzt wird - viewWillAppear wird nicht in der Ansicht aufgerufen - ich kann völlig verstehen, warum dies von Entwurf ist. Gibt es einen anderen UIView-Delegierten, den ich nutzen sollte? Ich habe in den Dokumenten nichts entdeckt.
Da "willEnterForeground" im App-Delegaten verfügbar ist, ist dies die beste Möglichkeit, um eine Benachrichtigung vom App-Delegaten an die Ansicht auszulösen? Fehle ich eine direktere elegante Art, dies in einer UIView zu erfassen?
Danke für irgendwelche Tipps.
Sie haben Recht mit den Delegiertenanrufen, aber für das, was Sie tun, klingt es für mich so, als würden Sie Ihre Netzwerkaktivitäten basierend auf den Methoden applicationDidBecomeActive:
und applicationWillResignActive:
, die beide auf dem App-Delegaten stehen, unterbrechen und fortsetzen .
Als Antwort auf Ihre Frage nach einer direkteren Erfassung dieser Benachrichtigungen in Ihrem UIView können Sie, wenn Sie keinen bequemen Zugriff auf den App-Delegaten haben, registrieren Sie sich für die Benachrichtigung von UIApplicationDidBecomeActiveNotification
und UIApplicationWillResignActiveNotification
über das Standardbenachrichtigungscenter. Das trennt Sie etwas davon, den Anwendungsdelegaten mit Ihrer Ansicht zu verbinden.