我有一个看起来像这样的视图控制器链:
>ROOT (Login)
---->Main Menu
-------->Settings
在Settings
内,我可以选择退出。有没有办法在一个流畅的动画中直接从Settings
跳到Login
?现在,我在self.dismissViewController
上呼叫Settings
,然后在Main Menu
上呼叫,但显示两个动画。
我正在寻找一种直接从Settings
过渡到Login
的方法,因此它甚至不应该在途中显示Main Menu
。这可能吗?
答案 0 :(得分:0)
在AppDelegate内部(在didFinishLaunchingWithOptions中): -
let userLoginStatus = NSUserDefaults.standardUserDefaults().boolForKey("isUserLoggedIn")
if(userLoginStatus)
{
// Assuming "Main" is the name of your storyboard
let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
letMainVC = mainStoryBoard.instantiateViewControllerWithIdentifier("Main") as! MainVC
window!.rootViewController = letMainVC
window!.makeKeyAndVisible()
}
在验证用户凭据后的LoginVC中,登录成功后,将Bool值设置为true,如下所示: -
// after successful login
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
NSUserDefaults.standardUserDefaults().synchronize()
同样,当用户点击注销时将Bool设置为false,并将Login设置为Root VC,如下所示: -
//Inside logout closure :-
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn")
NSUserDefaults.standardUserDefaults().synchronize()
let loginVC = self.storyboard?.instantiateViewControllerWithIdentifier("Login") as! LoginVC
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDel.window?.rootViewController = loginVC
这将直接一次过渡。如有任何问题,请告诉我。
注意: - 不要忘记在Storyboard文件的Identity部分设置Storyboard ID。
答案 1 :(得分:0)
在“设置”和“主菜单”上跳过self.dismissViewController
,仅将其发送到根目录。如果设置为YES,则解雇将解除接收器上显示的所有内容,包括中间人。