2017-02-05 2 views
0

Wenn sich mein Benutzer abmeldet, möchte ich alle UIViewController und UIViews aus dem Fenster entfernen und erneut mit einem neuen View-Controller starten.Alle UIViewControllers aus der App entfernen und neu starten

Mein Problem ist, dass, wenn ich den rootViewController des Fensters zu einem neuen View-Controller und ich debuggen die Ansicht Hierarchie der App, ich kann die neue Ansicht, aber die alten Ansichten sind einfach hinter dem neuen. Sie werden nicht entfernt und sind noch im Speicher.

Wie kann ich zuerst alle View-Controller und Ansichten entfernen?

Antwort

0

Entfernen Sie die alte Hierarchie aus dem Schlüsselfenster, bevor Sie die neue festlegen.

let keyWindow = UIApplication.shared.keyWindow 
keyWindow?.rootViewController?.view?.removeFromSuperview() 
keyWindow?.rootViewController == //... 
+0

Ich habe gerade versucht, das Entfernen der alle Subviews Fenster aber die Ansicht-Controller sind dealloc'd noch nicht: 'window.subviews.forEach {$ 0.removeFromSuperview()}'. Ich sollte beachten, dass ich auch einen modal präsentierten View-Controller habe, was die Dinge komplizieren könnte. – Sencha

+0

ohne zusätzliche Informationen kann ich dir nicht wirklich helfen. Ich kann Ihnen empfehlen, den Registerkarten-Controller als Root-Controller Ihrer Anwendung einzurichten (mit ausgeblendeter Tab-Leiste) und dann dieses einzelne Element durch den neuen Controller zu ersetzen. Auf diese Weise vermeiden Sie die Änderung des Root-Controllers und der Tab-Controller übernimmt die gesamte Verwaltung für Sie. – XeNoN

Verwandte Themen