gpt4 book ai didi

iOS 如何在 dismissController 时更改 rootViewController

转载 作者:搜寻专家 更新时间:2023-11-01 05:57:08 26 4
gpt4 key购买 nike

enter image description here

我的 Storyboard

如果用户没有登录,rootViewController 是 Login

用户登录完成后,rootViewController 为 MainTabBarController

我做到了

但是,我遇到的问题是Logout

我的注销是dismissViewController

如果我的 rootViewController 是 Login,它就可以工作

它将删除当前的 ViewController,因此出现 Login

但是当我的 rootViewController 是 MainTabBarController 时,关闭是行不通的,我尝试使用 poptoRootViewController 是徒劳的。

注销中我应该做什么?

我想这样做

dismissController(true,{
rootViewController = `Login`
})

最佳答案

对于注销,请执行以下操作:-(在调用注销的 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

同时在 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()
}

还有在验证用户凭据后完成登录验证的地方:-

 @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()
}

注意:-不要忘记为所需的 View Controller 添加 Storyboard ID 以实例化它们

关于iOS 如何在 dismissController 时更改 rootViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37782001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com