2016-07-30 64 views
1

我遇到了一些問題,使segue能夠正常工作。在swift中啓動segue的問題

其他一切正在工作,如保存用戶名和密碼解析。但是當用戶按下sign uplog in時,segue不起作用。

這裏是我的代碼:

import UIKit 
import Parse 

class ViewController: UIViewController { 

// Declaring variables & functions 
var signupMode = true 

var acitivityIndicator = UIActivityIndicatorView() 

func displayAlert (title: String, message: String) { 

    let alertController = UIAlertController(title: title, message: title, preferredStyle: .alert) 

    alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 

    self.present(alertController, animated: true, completion: nil) 


} 


// First view controller outlets/actions 
@IBOutlet var signupButton: UIButton! 
@IBOutlet var loginButton: UIButton! 

@IBOutlet var emailTextField: UITextField! 
@IBOutlet var passwordTextField: UITextField! 

@IBAction func signupAction(_ sender: AnyObject) { 

    if emailTextField.text == "" && passwordTextField.text == "" { 

     displayAlert(title: "Error in form", message: "Please enter both an email and password") 

    } else { 

     acitivityIndicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) 
     acitivityIndicator.center = self.view.center 
     acitivityIndicator.hidesWhenStopped = true 
     acitivityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray 
     view.addSubview(acitivityIndicator) 
     acitivityIndicator.startAnimating() 
     UIApplication.shared().beginIgnoringInteractionEvents() 

     if signupMode { 

      // Sign Up 

      let user = PFUser() 

      user.username = emailTextField.text 
      user.password = passwordTextField.text 

      user.signUpInBackground(block: { (success, error) in 

       self.acitivityIndicator.stopAnimating() 
       UIApplication.shared().endIgnoringInteractionEvents() 

       if error != nil { 

        var displayErrorMessage = "Please try again later." 

        if let errorMessage = error?.userInfo["error"] as? String { 

         displayErrorMessage = errorMessage 

        } 

        self.displayAlert(title: "Signup Error", message: displayErrorMessage) 

       } else { 

        print("user signed up") 

        self.performSegue(withIdentifier: "HomePageViewController", sender: self) 
       } 


      }) 


     } 


     } 

    } 


@IBAction func loginAction(_ sender: AnyObject) { 

    acitivityIndicator = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 50, height: 50)) 
    acitivityIndicator.center = self.view.center 
    acitivityIndicator.hidesWhenStopped = true 
    acitivityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.gray 
    view.addSubview(acitivityIndicator) 
    acitivityIndicator.startAnimating() 
    UIApplication.shared().beginIgnoringInteractionEvents() 

    let userEmail = self.emailTextField.text 

    let userPassword = self.passwordTextField.text 

    PFUser.logInWithUsername(inBackground: userEmail!, password:userPassword!) { 
     (user: PFUser?, error: NSError?) -> Void in 
     if user != nil { 

       self.performSegue(withIdentifier: "HomePageViewController", sender: self) 

     } else { 

      self.acitivityIndicator.stopAnimating() 

      } 
     } 

    } 

回答

1

嘗試在主線程原因請看

dispatch_async(dispatch_get_main_queue()) { 
    self.performSegue(withIdentifier: "HomePageViewController", sender: self) 
} 
+0

感謝。由於顯然是語法的更新,Swift不會允許我使用你的代碼。這是它現在的樣子:DispatchQueue.main.asynchronously(){ self.performSegue(withIdentifier:「HomePageViewController」,sender:self) }正面的事情是發生了什麼,但現在我得到一個線程1錯誤: signal SIGARBT – user6155249

+0

'DispatchQueue.main.async {self.performSegue(withIdentifier:「HomePageViewController」,sender:self) }' – Chandan

+0

是否有任何日誌然後共享,可能是某些插座的問題不存在於您的代碼中但在HomePageViewController的故事板中顯示爲黃色簡單。它只是我的猜測。 – Chandan