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()
}
}
}
감사 메인 스레드에서 SEGUE하기 :
여기 내 코드입니다. Swift는 구문의 업데이트가 있었기 때문에 정확한 코드를 허용하지 않습니다. 긍정적 인 점은 문제가 발생하지만 이제는 스레드 1 오류가 발생한다는 것입니다. DispatchQueue.main.asynchronously() { self.performSegue (withIdentifier : "HomePageViewController", 보낸 사람 : self) } 신호 SIGARBT – user6155249
'DispatchQueue.main.async { //self.performSegue(withIdentifier : "HomePageViewController", 발신자 : 자기) } ' – Chandan
어떤 로그가 있었는지, 공유가 있었는지, 코드에 일부 콘센트의 문제가있을 수 있습니다. HomePageViewController의 스토리 보드에서 노란색으로 표시됩니다. 그저 내 추측입니다. – Chandan