2016-07-30 3 views
1

제대로 작동하려면 몇 가지 문제가 있습니다.신속하게 문제를 일으키는 문제

구문 분석 할 사용자 이름과 암호 저장과 같은 다른 모든 작업이 진행 중입니다. 그러나 사용자가 sign up 또는 log 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

감사 메인 스레드에서 SEGUE하기 :

여기 내 코드입니다. Swift는 구문의 업데이트가 있었기 때문에 정확한 코드를 허용하지 않습니다. 긍정적 인 점은 문제가 발생하지만 이제는 스레드 1 오류가 발생한다는 것입니다. DispatchQueue.main.asynchronously() { self.performSegue (withIdentifier : "HomePageViewController", 보낸 사람 : self) } 신호 SIGARBT – user6155249

+0

'DispatchQueue.main.async { //self.performSegue(withIdentifier : "HomePageViewController", 발신자 : 자기) } ' – Chandan

+0

어떤 로그가 있었는지, 공유가 있었는지, 코드에 일부 콘센트의 문제가있을 수 있습니다. HomePageViewController의 스토리 보드에서 노란색으로 표시됩니다. 그저 내 추측입니다. – Chandan

관련 문제