2017-04-22 3 views
0

zur Startseite oder vorherigen Viewcontroller nach der Anmeldung zurückgehen, eine App mit einem Navigationscontroller zu einem Tabbar Controller und einem anderen Viewcontroller verbunden Tabbar Controller angeschlossen entwickle ich in dem Bild, wie gezeigt:Wie in swift 3

enter image description here

Jetzt möchte ich Benutzer die Anmeldeseite nur zeigen, wenn sie auf der zweiten Registerkarte klicken und nicht angemeldet So in der zweiten Registerkarte Controller, ich habe dies:.

if let token = cookies["token"] { 
     //do something 
} else { 
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "loginView") 
    self.tabBarController?.setViewControllers([vc!], animated: true) 
} 

und in meinem LoginViewController, ich würde ich Wenn ich mich erfolgreich eingeloggt habe, gehe ich zurück zur vorherigen Seite. Ich habe etwas über das Thema geforscht. Hier ist, was ich versucht habe. Ich probierte folgendes:

Es bringt die Seite hoch, zeigt aber nur noch die Tabbar und nicht die Navigationsleiste. Ich habe auch versucht dies:

self.navigationController?.pushViewController(vc, animated: true) 

Es bringt auch Benutzer zurück zum „minePage“, sondern zeigt nur Navigationsleiste nicht die Tabbar. Ich habe auch versucht, einen Abwickler segue im Storyboard und eine Funktion im ersten View-Controller hinzuzufügen: diese

@IBAction func prepareForUnwindWithSegue(segue: UIStoryboardSegue){ 
} 

und versuchte:

self.dismiss(animated: true, completion: nil) 

und passiert nach nichts angemeldet Meine Frage ist

.
  1. Ist das Storyboard-Setting eine gute Methode, um die Login-Ansicht hinzuzufügen? Einige Stackoverflow-Antworten schlagen vor, die Login-Ansicht vor allem zu setzen. Aber nur ein Teil der App erfordert Login. Also ist es nicht geeignet.
  2. Zurück zur vorherigen Seite oder einer Standard-Homepage (in meinem Fall die erste Tab-Controller-Ansicht)? Beide Fälle werden in der App benötigt.

Danke.

+0

hat niemand jemals die gleiche Situation? – yang

Antwort

0

Hallo könntest du nicht einfach den "vollen" eingeloggten View-Controller nach deiner Login-Seite stellen. Legen Sie also einen Übergang von Ihrem Login-View-Controller (nicht die Login-Schaltfläche) zum neuen View-Controller auf der rechten Seite (ein neuer nicht im obigen Diagramm) und rufen Sie ihn dann bedingungslos auf, wenn der Anmeldeversuch gültig ist?

Auf diese Weise haben Sie eine klare Aufteilung dessen, was vor dem Login und nach dem Login gesehen wird?

Dann fügen Sie dem ersten viewController auf dieser Registerkarte einfach Logik hinzu, um zu prüfen, ob der Benutzer angemeldet ist. Wenn ja, umgehen Sie den gesamten Weg zum neuen angemeldeten View-Controller über einen ähnlichen Übergang (vom ersten) VC zu dem neuen, der bedingt gefeuert wird).