einzelne Funktion, um alle offenen Ansicht-Controller zu verwerfen

Habe ich eine app, die eine single view application. Ich habe einen navigation-controller verbunden und alle untergeordneten Steuerungen, die von der root-Ansicht-controller.

In jedem Kind-controller, ich habe einen logout-button. Ich Frage mich, ob ich eine einzelne Funktion, die ich anrufen kann, die entlassen werden alle Controller, die geöffnet wurden zusammen auf dem Weg, egal, welcher controller gerade öffnen, drückt der Benutzer Abmelden?

Meine basic-start:

func tryLogout(){
     self.dismissViewControllerAnimated(true, completion: nil)
     let navigationController = UINavigationController(rootViewController: UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoginViewController") )
     self.presentViewController(navigationController, animated: true, completion: nil)
}

Ich bin auf der Suche für die meisten Speicher effiziente Art und Weise der Durchführung dieser Aufgabe. Ich meine logout-Funktion in einem separaten utils-Datei, dann kann ich aber nicht selbst. Und ich habe immer noch das Problem zu wissen, welche Controller zu entlassen dynamisch.

Update
Pop-root-view-controller wurde vorgeschlagen. Also mein Versuch, so etwas wie:

func tryLogout(ViewController : UIViewController){
     print("do something")
     dispatch_async(dispatch_get_main_queue(), {
         ViewController.navigationController?.popToRootViewControllerAnimated(true)
         return
     })
 }

Wäre dies der beste Weg, das zu erreichen, was bin ich danach?

InformationsquelleAutor der Frage user2363025 | 2015-11-04

Schreibe einen Kommentar