iOS-Login / Sign-Out-Implementierung in Swift
Habe ich schon versucht zu implementieren, die eine Login - /Logout-Flow für eine iOS-app in swift. Hier ist meine storyboard -
In der main-view-controller (das ist der Blaue Bildschirm), habe ich folgenden code implementiert, um zu erkennen, dass, wenn der Benutzer bereits angemeldet ist, dann, automatisch nehmen Sie an der table-view-controller -
override func viewDidAppear(animierte: Bool) {
if PFUser.currentUser() != nil {
self.performSegueWithIdentifier("test", sender: self)
}
Das Problem ist, dass wenn ich mich Anmelde oder Login über einen der green screens, die Tabelle-Ansicht Navigationsleiste erscheint anders. Der "Abmelden" - button erscheint korrekt, wenn der Benutzer öffnet die app und ist bereits angemeldet sind, jedoch der Anmeldung oder Anmeldung über die green screens, die die Navigationsleiste enthält ein "< Zurück' - Schaltfläche.
Kann mir jemand erklären, wie man ein login /logout Fluss muss umgesetzt werden in der storyboard-und programmgesteuert in Swift. Ich habe gesehen, einige Objective-C Beispiele gibt, aber kann nicht scheinen zu finden, eine in Swift. Wenn jemand ein gutes Beispiel, wäre es wirklich hilfreich.
in Ihrem viewdidload, auch wenn Sie eine haben, müssen Sie zum aufrufen von "hidesBackButton" - Eigenschaft des UIViewController, dies ist der Weg, um diese verschwinden, wenn dies nicht Ihre Frage, dann Fragen oder Antworten zu diesem Kommentar. Ich würde post ein code-Beispiel, aber es gibt zu viele schwachsinnig downvoters auf der Suche jetzt.
Vielen Dank, das war eine der Fragen, die ich hatte mit dem Login-flow. Ich fügte hinzu, 'selbst.navigationItem.hidesBackButton = true' zu viewDidLoad und es hat Super geklappt!
kein problem, bin froh, dass es geklappt hat für Sie
InformationsquelleAutor SB2015 | 2015-08-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
< Back
Schaltfläche erscheinen, weil Sie dabei ein push-segue von der login-view-Controller auf den tab bar controller. Einen besseren flow für die app wäre, wenn die tab-bar-controller werden Ihre ursprünglichen view-controller. Dann, in seinemviewDidAppear
Methode, zu überprüfen, dass der Benutzer angemeldet ist. Wenn der Benutzer nicht angemeldet, Modal segue OHNE animation, um Ihre login-view-controller. All dies geschieht, ohne dass der Benutzer dies merkt, und wird es erlauben, die storyboard-setup Sie wollenDie Tab-Bar-Controller wäre noch die Tabelle Ansehen, wie seine Karteikarte. Es wäre aber auch eine separate flow wie dieser: Tab-Bar-Controller -> (modal -) - > Navigations-Controller -> (push) -> Main-View-Controller (Blue-Screen). Also, wenn die app gestartet wird, rufen Sie den Tab Bar Controller viewWillAppear. In dieser Methode überprüfen, ob der Benutzer angemeldet ist. Wenn der Benutzer angemeldet ist, dann bleiben Sie auf dem tab bar controller und dem app als normal. Wenn der Benutzer NICHT eingeloggt ist, wird der modale Wechsel in den navigation-controller und Ihre login-screens.
Danke. Das Problem mit dieser ist, auf den Table View controller "Abmelden" funktioniert nicht mehr. Wenn in einem Navigation-Controller, wie Sie entlassen den Bildschirm, so dass es geht zurück auf den Blauen Bildschirm? Dies ist kein Problem mit einem modalen (was ich auch vor hatte), aber mit einem Stoß selbst.dismissViewControllerAnimated(true, Fertigstellung: {}); scheint nicht zu funktionieren.
dismissViewControllerAnimated()
ist nur für die Abberufung von Modal präsentiert Ansichten. Wenn Sie wollen, zu entlassen, schob controller, verwenden Sie dieUINavigationController
MethodenpopToViewControllerAnimated()
,popToRootViewControllerAnimated()
oderpopToViewController(,animated:)
. Siehe docs auf diese Methoden.Letztlich war dies der Fluss, der für mich gearbeitet. Vielen Dank auch für die Hilfe beheben Sie die Zeichen-Out-Problem als auch @kiethbhunter!
InformationsquelleAutor keithbhunter
Swift 4
In LoginViewController-login-button-Aktion
validieren login nach Ihrem Szenario.
In View-Controller mit dem logout-button.
In AppDelegate, didFinishLaunchingWithOptions
InformationsquelleAutor Abhooshan Bhattarai
Du bist besser dran mit einem setup wie hier. Das problem ist, dass Ihre login-Ansicht befindet sich in einem navigation-controller sowie. Nur bringen Sie es außerhalb. Die segue ich habe Platz, ist ein "Zeigen"
Halten Sie im Verstand, die Sie einbetten können Sie eine Tab-Bar-controller im view-controller gehen bis zu dem Menü-Editor -> Embed-In -> Tab Bar Controller.
Erstellen Sie dann ein Wechsel zu dem Tab Bar Controller und du bist gut zu gehen.
Aber was, wenn Sie bereits eingeloggt bist?
Dann Sie speichern möchten, ein Boolean-flag
NSUserDefaults
weiß, dass wenn der Benutzer angemeldet ist in. Dann daran erinnern, dass Bool inAppDelegate
unter derdidFinishLaunchingWithOptions
undapplicationWillEnterForeground
ähnlich wie diese:Ah shoot, my bad, die Waffe sprang. Alles wird funktionieren genau das gleiche, aber statt der Einbettung von "Home" - Ansicht in einem Navigation-Controller, es wird ein Tab Bar Controller. So wäre es
Editor -> Embed In -> Tab Bar Controller
Storyboard-setup nicht ordnungsgemäß funktioniert tatsächlich. @keithbhunter Lösung gearbeitet, aber ich weiß nicht, wie 'Abmelden' jetzt. Irgendeine Idee, wie kann ich das entlassen eines View-Controller beim Sign Out geklickt?
InformationsquelleAutor Cole