簡體   English   中英

ViewControllers的條件加載停留在初始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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM