2016-05-28 13 views
0

Wenn ich die App über xcode starte, dann gehe zum Homescreen und lade die App entweder durch eine lokale Benachrichtigung oder durch Drücken des Symbols, der Code in meiner viewDiDLoad wird nicht ausgeführt, nur wenn die App beendet und komplett neu geladen wird.Wie wird der Code beim Laden der App von der Homepage/lokalen Benachrichtigung ausgeführt?

Ich möchte grundsätzlich, dass die App jedes Mal neu ist, wenn die App geladen ist. Wie bekomme ich die Wirkung dieser ersten Ansicht geladen, ohne die App jedes Mal zu töten? Gibt es eine bestimmte ViewDiD______, die geladen wird, wenn die App minimiert wird?

Antwort

0

Wenn Sie eine Benachrichtigung erhalten und die App auf diese Weise öffnen, werden Sie über Delegate-Methoden in Ihrer AppDelegate informiert - hier ist eine link zu der Dokumentation, die die verschiedenen Möglichkeiten beschreibt, wie Sie Informationen erhalten und darauf reagieren können.

Sie stellen jedoch eine separate Frage, weil viewDidLoad nur einmal im Lebenszyklus eines jeden Controllers aufgerufen wird. Es gibt keine Möglichkeit, dass sie einfach verschwinden und neu geladen werden.

Eine Lösung, die Sie tun könnten, wird eine globale Variable gesetzt, wenn Ihre Anwendung neu gestartet wird (das in applicationDidBecomeActive nachgewiesen werden kann), und dann in viewWillAppear des Controllers, überprüfen Sie für diese Variable und Maßnahmen ergreifen entsprechend frisch aussehen (und dann mache diese Variable falsch).

Ein Wort der Warnung allerdings - es kann nicht eine gute Benutzererfahrung sein, wenn jemand schnell aus Ihrer App ausschaltet (oder eine Benachrichtigung erhält, sogar), und es auf frisch zurückgesetzt.

+0

Ich weiß nicht, ob ich hier etwas albernes mache, aber ich habe damit herumgespielt und es hat nicht funktioniert, aber ich sehe definitiv den Gedankengang. Wird viewWillAppear bei jedem Laden der App ausgeführt? Ursache, wenn ich sogar einen Druck in meinem viewwillappear mache, bekomme ich nur etwas beim ersten Mal, wo der Druck in der didbecomeactive jedes Mal geschieht. Und es wird auch nur einmal nach der Variablen gesucht, die im Delegaten gesetzt ist. – Noowoo

+0

Ah, ich denke du bist in diesem Punkt richtig. Möglicherweise müssen Sie in diesem Fall eine Benachrichtigung verwenden, um den Controller zu warnen – sschale