1
我遇到了一些問題,使segue能夠正常工作。在swift中啓動segue的問題
其他一切正在工作,如保存用戶名和密碼解析。但是當用戶按下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()
}
}
}
感謝。由於顯然是語法的更新,Swift不會允許我使用你的代碼。這是它現在的樣子:DispatchQueue.main.asynchronously(){ self.performSegue(withIdentifier:「HomePageViewController」,sender:self) }正面的事情是發生了什麼,但現在我得到一個線程1錯誤: signal SIGARBT – user6155249
'DispatchQueue.main.async {self.performSegue(withIdentifier:「HomePageViewController」,sender:self) }' – Chandan
是否有任何日誌然後共享,可能是某些插座的問題不存在於您的代碼中但在HomePageViewController的故事板中顯示爲黃色簡單。它只是我的猜測。 – Chandan