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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie anrufen :
Ablehnen sollten alle view-Controller oberhalb der root-view-controller.
InformationsquelleAutor der Antwort Liam
Aktualisierte Antwort für Swift 3.2 und swift 4
und wenn Sie navigationController
InformationsquelleAutor der Antwort Bijender Singh Shekhawat
Swift3
InformationsquelleAutor der Antwort markhorrocks
Werfen Sie einen Blick auf wie entspannen Sie leitet über zu arbeiten. Seine super einfach, und ermöglicht Ihnen, Sie zu entlassen/pop bis zu einem gewissen viewcontroller in der bietet, auch wenn es besteht aus einer komplexen navigation (geschachtelte geschoben und oder vorgestellten view-Controller), ohne viel code.
Hier ist eine sehr gute Antwort (von smilebot), die zeigt, wie entspannen Sie leitet über um Ihr problem zu lösen
https://stackoverflow.com/a/27463286/503527
InformationsquelleAutor der Antwort Nitin Alabur
Swift 4:
Zu entlassen unerwünschte Rückstände Modalen ViewControllersverwendete ich diese und gut funktioniert, ohne dass alle Navigations-stack-Referenzen.
self.view.window!
haben Absturz, für meinen Fall, vielleicht, weil seine Modalen Bildschirm und verloren hatte, der Verweis auf das Fenster.InformationsquelleAutor der Antwort Naishta
Werke für Swift 3.0 +
InformationsquelleAutor der Antwort Pardeep Kumar