我的故事板
如果用户没有登录,则rootViewController是 Login
用户登录完成后,rootViewController是MainTabBarController
我做到了
但是,我遇到的问题是 Logout
我的Logout是dismissViewController
如果我的rootViewController是Login,它的工作原理
它将删除当前的ViewController,因此Login出现
但是当我的rootViewController是MainTabBarController,dismiss不起作用时,我试着poptoRootViewController徒劳无功.
我该怎么办Logout?
我想这样做
dismissController(true,{
rootViewController = `Login`
})
Run Code Online (Sandbox Code Playgroud)
对于Logout,请执行以下操作: - (在IBAction中添加以下代码或在调用注销时使用didSelect ..etc方法)
// Making Login as rootViewController as user is no longer logged in
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn")
NSUserDefaults.standardUserDefaults().synchronize()
let loginVC = self.storyboard?.instantiateViewControllerWithIdentifier("Login") as! loginViewController
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDel.window?.rootViewController = loginVC
Run Code Online (Sandbox Code Playgroud)
另外在AppDelegate中添加以下内容: -
// Checking user login status, if user already logged in then making main tab bar view controller as root view controller
let userLoginStatus = NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn")
if(userLoginStatus)
{
let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let centerVC = mainStoryBoard.instantiateViewControllerWithIdentifier("MainTabBar") as! ViewController
window!.rootViewController = centerVC
window!.makeKeyAndVisible()
}
Run Code Online (Sandbox Code Playgroud)
此外,在验证用户凭据后,登录验证完成的位置: -
@IBAction func loginTapped(sender: AnyObject) {
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let centerVC = mainStoryBoard.instantiateViewControllerWithIdentifier("MainTabBar") as! ViewController
// Important to set status to true
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
NSUserDefaults.standardUserDefaults().synchronize()
appDel.window!.rootViewController = centerVC
appDel.window!.makeKeyAndVisible()
}
Run Code Online (Sandbox Code Playgroud)
注意: -不要忘记为所需的视图控制器添加STORYBOARD ID以实现它们
| 归档时间: |
|
| 查看次数: |
3644 次 |
| 最近记录: |