[英]Conditional loading of ViewControllers: Temporary display of wrong ViewController
[英]Conditional loading of ViewControllers stuck at initial ViewController
我正在嘗試使用NSUserDefaults保存用戶的會話,如果用戶已登錄,我將NSUserDefaults設置為true,反之亦然。 但是,即使輸入了正確的憑據,我的用戶也會永久停留在登錄頁面上。 我該如何解決?
LoginViewController代碼
func handlingAuthentication(notification: NSNotification) {
let dict = notification.object as! NSDictionary
let errorFound = dict["error"]
let errorMessage = dict["message"]
print(errorFound)
if(errorFound){
//initialize Alert Controller
let alertController = UIAlertController(title: "Authentication error", message: errorMessage?.string, preferredStyle: .Alert)
//Initialize Actions
let okAction = UIAlertAction(title: "Ok", style: .Default){
(action) -> Void in
self.dismissViewControllerAnimated(true, completion: nil)
}
//Add Actions
alertController.addAction(okAction)
//Present Alert Controller
self.presentViewController(alertController, animated: true, completion: nil)
}
else
{
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
NSUserDefaults.standardUserDefaults().synchronize()
self.dismissViewControllerAnimated(true, completion:nil)
}
}
這是我在LoginViewController中調用方法handlingAuthentication的地方
@IBAction func loginBtn(sender: AnyObject) {
let loginobj = Login(userName : self.usernameField.text!, passWord : self.pwdField.text!)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.handlingAuthentication(_:)), name:"errorPresent", object: nil)
loginobj.getRequest()
}
HomeViewController代碼
override func viewDidAppear(animated: Bool) {
let isUserLoggedIn = NSUserDefaults.standardUserDefaults().boolForKey("IsUserLoggedIn")
if(!isUserLoggedIn){
self.performSegueWithIdentifier("toLoginVC", sender: self)
}
}
@IBAction func logoutBtn(sender: AnyObject) {
NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn")
NSUserDefaults.standardUserDefaults().synchronize()
}
您使用的是不同的密鑰:
由於您存儲在密鑰“isUserLoggedIn”中
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
isUserLoggedIn將始終為false,因為您獲得了另一個鍵“IsUserLoggedIn”
let isUserLoggedIn = NSUserDefaults.standardUserDefaults().boolForKey("IsUserLoggedIn")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.