2016-10-30 3 views
0

Ich habe meinen Login-Bildschirm in eine UINavigationController eingebettet und meine Startseite in eine UITabBarController eingebettet.So überprüfen Sie, ob ein Benutzer angemeldet ist und nicht zum Login-Bildschirm umgeleitet wird

Meine Anmeldeseite wurde programmgesteuert erstellt und TabBarController wurde mit storyboards erstellt. In AppDelegate.swift Datei habe ich den Login-Bildschirm rootViewController gemacht.

Aber jetzt will ich überprüfen, ob der Benutzer angemeldet ist und mache die TabBarController die rootViewController, und wenn der Benutzer nicht angemeldet ist, zum Login-Bildschirm umleiten, segue dann auf die TabBarController und die rootViewController machen. Der Server authentifiziert den Benutzer durch Senden eines Tokens an den Client. Speichere ich das Token mit NSUserDefaults? Sollte ich überprüfen, ob der Benutzer _token _ als eine Möglichkeit hat, zu überprüfen, ob der Benutzer angemeldet ist?

+0

Diese Methode wird häufig verwendet, um zu überprüfen, ob der Benutzer angemeldet ist. Genau wie Cookies in der Webentwicklung verwendet werden. – Adeel

+0

@Adeel mache ich den Check in ViewWillAppear in jeder UIVewController-Klasse und auch in AppDelegate, wenn ich die App das erste Mal anrufe? – user3497437

+0

Nein, nicht in _viewWillAppear_ tatsächlich in keinem der View-Controller. Sie müssen in der Methode _didFinishLanchingWithOption_ Ihres _AppDelegate_ nach dem Token suchen. – Adeel

Antwort

2

Da Sie Ihre LoginViewController programmatisch erstellen, nehme ich an, dass die TabBarController die rootViewController der storyboard standardmäßig ist. Alles, was Sie in Ihrem AppDelegate tun müssen, ist dies.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    let token = UserDefaults.standard.object(forKey: "token") 
    if token == nil { 
     //*************** 
     //Create your LoginViewController and make it the rootViewController 
     //*************** 
    } 
    return true 
} 

Hinweis: Ich verwende Swift 3 so wird es ein kleiner Unterschied in der Syntax sein.

+0

danke auch, wenn der Benutzer aus dem Anmeldebildschirm signiert hat, sollte ich den Login-Bildschirm-Controller entlassen und den Tabcontroller als rootview-Controller initailize – user3497437

+0

ja, das ist richtig. Sie müssen nur den 'TabBarController' instanziieren und ihn als' rootViewController' im Schlüsselfenster Ihrer Anwendung festlegen. Und denken Sie daran, niemals einen 'TabBarController' auf einen anderen' ViewController' zu schieben/präsentieren. – Adeel

+0

danke. Also verwerfe ich den Navigationscontroller und setze den rootviewcontroller auf den Tab-Controller – user3497437

Verwandte Themen