2016-10-30 72 views
0

我的登錄屏幕嵌入在UINavigationController中,我的主頁屏幕嵌入UITabBarController如何檢查用戶是否已登錄,是否不重定向到登錄屏幕

我的登錄頁面以編程方式完成,TabBarController使用storyboards創建。在AppDelegate.swift文件中,我製作了登錄屏幕rootViewController

但現在我要檢查,如果用戶登錄,使TabBarControllerrootViewController,如果用戶沒有登錄,重定向到登錄界面,然後Segue公司的TabBarController,並使其成爲rootViewController

服務器通過向客戶端發送令牌來認證用戶。我是否使用NSUserDefaults存儲令牌?我應該檢查用戶是否有_token _作爲驗證用戶是否登錄的方法?

+0

這是常用於驗證用戶是否已登錄的方式。就像在Web開發中使用Cookie一樣。 – Adeel

+0

@Adeel我做每個UIVewController類中的viewWillAppear中的支票,還有我在第一次打電話時AppDelegate中的支票? – user3497437

+0

不,不在_viewWillAppear_中,實際上不在任何視圖控制器中。您需要檢查_AppDelegate_的_didFinishLanchingWithOption_方法中的標記。 – Adeel

回答

2

因爲要創建您的LoginViewController編程,所以我假定TabBarController將是storyboard默認的rootViewController。你所需要做的就是在你的AppDelegate這是。

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 
} 

注意:我使用的是Swift 3,所以在語法上會有細微差別。

+0

還要感謝當用戶從登錄屏幕上簽名時,我是否應該關閉登錄屏幕控制器並啓動tabview控制器作爲rootview控制器 – user3497437

+0

是的。你只需要''實例化'TabBarController'並將其設置爲應用程序關鍵窗口的'rootViewController'。請記住,切勿將「TabBarController」推送到另一個「ViewController」。 – Adeel

+0

謝謝。所以我解僱了導航控制器,並將rootviewcontroller設置爲標籤控制器 – user3497437