Ich habe Zweifel müssen klar sein .. Ich habe Stapel und eine Navigation controller.now wenn der Stapel lädt die viewDidLoad
viewWillAppear
viewDidAppear
wird aufgerufen. Wenn ich auf einen Button klicke, dann drückt dieser Button mich auf den neuen Stack, jetzt gibt mir der neue Stack die Option auf den Back..nun wenn ich auf die Rückseite des Navigationscontrollers klicke..warscheinlich wird nur viewWillAppear
aufgerufen .. Warum nicht viewDidLoad
und nicht viewDidAppear
Stack ist Last-in-First-Out (LIFO). Wenn Sie also neue View-Controller auf den Stack schieben, wird der vorherige View-Controller nicht zerstört (und bleibt im Speicher). Wenn Sie zurückspringen, müssen Sie den Viewcontroller nicht neu erstellen, da er bereits im Speicher vorhanden ist. Also wird nur viewWillAppear
aufgerufen.
Warum viewDidAppear
in diesem Fall nicht aufgerufen wird, kann ich mich nicht erinnern, wo ich das gelesen habe, aber viewDidAppear
wird aufgerufen, nachdem die Ansicht Ihres UIViewControllers zur UIWindow-Hierarchie der Anwendung hinzugefügt wurde. Und dieser Prozess wird ausgeführt, bevor der UIViewController zum ersten Mal angezeigt wird.
viewDidLoad
wird nur aufgerufen, wenn viewControllers-Ansichten in den Speicher geladen werden. Es wird gemacht, wenn
In Ihrem Fall ist der viewController beim Zurücksetzen bereits geladen, so dass Sie viewDidLoad
nicht erneut aufrufen müssen.
Zunächst einmal nette Frage @ user2102546. Überprüfen Sie hier den perfekten Grund für Ihre Anfrage.
viewDidLoad wird nur aufgerufen, wenn View-Controller-Ansichten entladen wurden und neu geladen werden müssen.
Wenn Sie normalerweise einen Navigationscontroller verwenden und mit einer der Popup-Methoden zu einer vorherigen Ansicht zurückkehren, viewDidLoad does not get called again, because the view are not unloaded yet
.
Allerdings kann das System die Ansichten eines beliebigen View-Controllers entladen, wenn dieser nicht im Vordergrund steht, um Speicher freizugeben, sodass viewDidLoad jederzeit aufgerufen werden kann, wenn ein View-Controller vorgestellt wird. Sie müssen Ihren Code schreiben, um korrekt auf die verschiedenen Ereignisse zu reagieren.
Viel Spaß beim Programmieren!
Ich habe keine vollständige Antwort für Sie, aber ich hoffe, das hilft.
viewDidLoad ist ein Callback zum Ändern einer Ansicht nach dem Laden des Ereignisses. In Ihrem Fall wurde die Ansicht bereits geladen. Die Tatsache, dass es nicht in Sicht ist, bedeutet nicht, dass es aus dem Speicher gelöscht wurde.
viewDidAppear: Ich weiß zwar nicht, warum dieses Ereignis nicht ausgelöst wird und würde mich freuen, wenn jemand anderes die Lücke füllen würde.
Tags und Links iphone ios viewcontroller uinavigationcontroller