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()
註銷,並且我需要重新輸入正確的用戶名和密碼。
然後這裏出現了一個問題,即使我輸入了錯誤的用戶名,它會繼續到第二個視圖控制器,雖然它會顯示一條警告,說用戶名無效。同時,即使我點擊註冊而未登錄,它也會繼續。爲什麼會發生?誰能幫我?
你的代碼在哪裏會導致'self.performSegueWithIdentifier(「push」,sender:nil)'?確保當您輸入錯誤的用戶名時不會執行此過程。 – chrisamanse
我把它放進如果signupError == {零 的println(「登錄」) self.performSegueWithIdentifier(「推」,發件人:無) } –
它應該是正確的,因爲當我打開應用程序在第一次,它按我的想法工作,但是當我註銷並重試時,它不再工作 –