2016-07-29 5 views
0

Ich habe einen iOS View-Controller, der entweder von einem SourceViewController oder als Ergebnis eines Klick auf "< Zurück" in der Navigationsleiste angezeigt werden kann.Finden Sie heraus, ob ein UIViewController aufgrund der Rückwärtsnavigation erschienen ist

Wie finde ich heraus, ob ViewController als Ergebnis des Klickens/Berührens von " < Back " auf der Navigationsleiste angezeigt wurde?

+0

Ihre Frage nicht richtig bekommen! – Lion

+0

sollten Sie eine Methode auf viewDidAppear schreiben, um zu überprüfen, ob der aktuelle UIVIewController der letzte Controller in der Eigenschaft viewControllers von navigationController ist –

+0

@MohsenShakiba dies ist eine gute Idee, aber Sie müssen immer noch für die Erstanzeige des View-Controller berücksichtigen. – Losiowaty

Antwort

1

viewDidLoad wird nicht aufgerufen, wenn Sie zurück navigieren, so können Sie dort eine Art Flag setzen und an geeigneter Stelle zurücksetzen (vielleicht viewDidAppear?). Wie, wenn viewDidLoad jedes Mal aufgerufen wird, wenn Sie es von SourceViewController öffnen, hängt von Ihrem Code ab - wenn Sie jedes Mal eine neue Instanz erstellen, sollten Sie in Ordnung sein.

Als ein Beispiel:

class SampleViewController : UIViewController { 
    var isOpenedFromBackNavigation = false 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     if self.isOpenedFromBackNavigation { 
      // code that should be run if we navigated back here 
     } 
     self.isOpenedFromBackNavigation = true 
    } 
} 
+0

ich denke 'viewDidAppear' wird auch beim ersten Laden nach' viewDidLoad' richtig? http://stackoverflow.com/questions/11254697/difference-between-viewdidload-and-viewdidappen – xmhafiz

+0

Ja, deshalb verwenden wir ein Flag, um anzuzeigen, ob der View-Controller bereits angezeigt wurde. – Losiowaty

Verwandte Themen