2013-04-05 13 views
7

Ich habe 2 View Controller mit Navigation Controller. Wenn ich [self.navigationController popViewControllerAnimated:YES]; in der zweiten verwenden - die erste öffnet, aber die Methoden in ViewDidLoad nicht aufgerufen. Welche Methoden werden in dieser Situation in der ersten Steuerung aufgerufen?Welche Methode heißt nach dem Tippen zurück Schaltfläche in ios

+0

Die Ansicht ist bereits geladen, sie werden nicht entladen, bis sie abspringen. Benutze ARC nicht, wenn du neu bist, nur meine Empfehlung. –

+0

Siehe auch: http://stackoverflow.com/questions/1557290/how-to-trap-the-back-button-event – Senseful

Antwort

23

Die Navigationssteuerung viewWillAppear: auf einen View-Controller sendet, bevor sie auf dem Bildschirm ihrer Ansicht nach setzen und viewDidAppear: nach.

Innerhalb viewWillAppear: und viewDidAppear: kann der View Controller self.isMovingToParentViewController überprüfen. Wenn isMovingToParentViewControllerYES ist, wird der Ansichts-Controller an erster Stelle zum Navigations-Controller hinzugefügt (vermutlich weil es der Root-View-Controller des Navigations-Controllers ist oder weil er gedrückt wird). Wenn isMovingToParentViewControllerNO ist, befindet sich der View-Controller bereits im Stack des Navigations-Controllers und ein anderer View-Controller wird geöffnet, um ihn anzuzeigen.

Gelesen “Handling View-Related Notifications” in the UIViewController class reference.

+2

Nach drei Jahren der Arbeit mit iOS wusste ich das noch nicht ... – Nailer

1

In diesem Fall wird viewWillAppear Methode aufgerufen werden.

-(void)viewWillAppear:(BOOL)animated 
{ 

} 
+0

Vielen Dank! Jetzt sehe ich, wie man das macht! – ShurupuS

+0

Vergessen Sie nicht, '[super viewWillAppear: animated];'! :) – yujean

Verwandte Themen