2015-05-18 64 views
1

我的想法是創建一個登錄應用程序,當我登錄,我會Segue公司到一個新的視圖控制器,做一些事情,和我的代碼是這樣的:如何註銷並正確連接到viewcontroller?

@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()註銷,並且我需要重新輸入正確的用戶名和密碼。

然後這裏出現了一個問題,即使我輸入了錯誤的用戶名,它會繼續到第二個視圖控制器,雖然它會顯示一條警告,說用戶名無效。同時,即使我點擊註冊而未登錄,它也會繼續。爲什麼會發生?誰能幫我?

+0

你的代碼在哪裏會導致'self.performSegueWithIdentifier(「push」,sender:nil)'?確保當您輸入錯誤的用戶名時不會執行此過程。 – chrisamanse

+0

我把它放進如果signupError == {零 的println(「登錄」) self.performSegueWithIdentifier(「推」,發件人:無) } –

+0

它應該是正確的,因爲當我打開應用程序在第一次,它按我的想法工作,但是當我註銷並重試時,它不再工作 –

回答

3

嘗試一天後,我找到了答案,通過使用unwinded segue,這個問題很容易修復。

相關問題