我有我的登录屏幕嵌入在UINavigationController
和我的主页屏幕嵌入在UITabBarController
。
我的登录页面是通过编程完成的,TabBarController
是使用storyboards
创建的。在AppDelegate.swift
文件中,我将登录屏幕设置为rootViewController
.
但是现在我想检查用户是否登录并使TabBarController
成为rootViewController
,如果用户没有登录,重定向到登录屏幕,然后segue到TabBarController
并使其成为rootViewController
。
服务器通过向客户端发送令牌来验证用户。我是否使用NSUserDefaults
存储令牌?我应该检查用户是否有 _token
_作为验证用户是否登录的一种方式吗?
由于您以编程方式创建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
,所以语法会有轻微的差异。