簡體   English   中英

如何正確注銷和segue到viewcontroller?

[英]How to logout and segue to the viewcontroller correctly?

我的想法是創建一個登錄應用程序,當我登錄時,我將轉到一個新的視圖控制器並做一些事情,我的代碼是這樣的:

 @IBAction func signUp(sender: AnyObject) {
    var error = ""

    if username.text == "" || password.text == "" {

        error = "Please enter a username and password"

    }
    if error != "" {
        displayAlert("Error in form", error: error)

    } else {



        activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))     //waiting animation
        activityIndicator.center = self.view.center
        activityIndicator.hidesWhenStopped = true
        activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
        view.addSubview(activityIndicator)
        activityIndicator.startAnimating()
        UIApplication.sharedApplication().beginIgnoringInteractionEvents()


        if signupActive == true {                   

            var user = PFUser()
            user.username = username.text
            user.password = password.text




            user.signUpInBackgroundWithBlock {
                (succeeded: Bool, signupError: NSError?) -> Void in

                self.activityIndicator.stopAnimating()

                UIApplication.sharedApplication().endIgnoringInteractionEvents()


                if signupError == nil {
                    println("signed up")


                } else {
                    if let errorString = signupError!.userInfo?["error"] as? NSString
                    {

                        error = errorString as! String

                    } else {

                        error = "Please try again later"

                    }

                    self.displayAlert("Could not sign up", error: error)
                }
            }


        } else {

            PFUser.logInWithUsernameInBackground(username.text as String!, password:password.text as String!) {
                (user: PFUser?, signupError: NSError?) -> Void in


                self.activityIndicator.stopAnimating()
                UIApplication.sharedApplication().endIgnoringInteractionEvents()

                if signupError == nil {

                    println("logged in")

                    self.performSegueWithIdentifier("push", sender: nil)

                } else {

                    if let errorString = signupError!.userInfo?["error"] as? NSString {

                        // Update - added as! String

                        error = errorString as! String

                    } else {

                        error = "Please try again later."

                    }

                    self.displayAlert("Could Not Log In", error: error)


                }
            }


        }


    }


}

我將注冊和登錄放在同一個按鈕中,然后使用signUpActive將它們分開,並將self.performSegueWithIdentifier("push", sender: nil)放入登錄部分,所以當我輸入時正確的密碼和用戶名我可以轉到新的視圖控制器。

它運作良好。 但是當我在新的視圖控制器中添加一個新按鈕,當我點擊該按鈕時,我將轉到第一個視圖控制器並使用PFuser.logout()注銷,我需要重新輸入正確的用戶名和密碼。

然后這里有一個問題,即使我輸入了錯誤的用戶名,它也會轉到第二個視圖控制器,盡管它會顯示一個警告,說明用戶名無效。 同時,即使我點擊注冊沒有登錄,它也會消失。 為什么會這樣? 誰能幫我?

在嘗試了一天之后,我找到了答案,通過使用unwinded segue,可以很容易地解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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