Я искал и искал, но не нашел решение. Регистрация работает, но не будет переходить к следующему контроллеру представления. Heres мой код:Segue to next view controller после успешной регистрации
import UIKit
import Parse
import Bolts
class SignUpVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var profilePictureIV: UIImageView!
@IBOutlet weak var firstNameTF: UITextField!
@IBOutlet weak var lastNameTF: UITextField!
@IBOutlet weak var newUsernameTF: UITextField!
@IBOutlet weak var newPasswordTF: UITextField!
@IBOutlet weak var emailTF: UITextField!
@IBOutlet weak var phoneNumberTF: UITextField!
@IBAction func setProfilePicture(sender: AnyObject) {
let myPickerController = UIImagePickerController()
myPickerController.delegate = self
myPickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
self.presentViewController(myPickerController, animated: true, completion: nil)
}
@IBAction func signUpButton(sender: AnyObject) {
let spinner: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0, 0, 150, 150)) as UIActivityIndicatorView
if firstNameTF.text != "" && lastNameTF.text != "" && newUsernameTF.text != "" && newPasswordTF.text != "" && emailTF.text != "" && phoneNumberTF.text != "" {
let newUser = PFUser()
if let profilePictureImage = profilePictureIV?.image {
let profilePicture = UIImageJPEGRepresentation(profilePictureImage, 1)!
let profilePictureImageFile = PFFile(data: profilePicture)
newUser["profilePicture"] = profilePictureImageFile
}
newUser["firstName"] = firstNameTF.text
newUser["lastName"] = lastNameTF.text
newUser.username = newUsernameTF.text
newUser.password = newPasswordTF.text
newUser.email = emailTF.text
newUser["phoneNumber"] = phoneNumberTF.text
newUser.signUpInBackgroundWithBlock {
(succeeded: Bool, error: NSError?) -> Void in
if let error = error {
spinner.startAnimating()
self.alert("Opps", textMessage: (error.localizedDescription))
} else {
spinner.startAnimating()
self.alert("Congratualtion!", textMessage: "Success, your account has been created.")
self.performSegueWithIdentifier("showMessages", sender: self)
}
}
} else {
alert("Hmm...", textMessage: "If you want an account, please fill in the blanks.")
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(animated: Bool) {
self.navigationController!.navigationBar.hidden = false
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
profilePictureIV.image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.dismissViewControllerAnimated(true, completion: nil)
}
func alert(textTitle: String, textMessage: String) {
let alertController = UIAlertController(title: textTitle, message: textMessage, preferredStyle: .Alert)
alertController.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
Если я играть self.performSegueWithIdentifier("showMessages", sender: self)
линию где-нибудь еще, то, когда я запустить программу и нажать на кнопку Регистрация будет непосредственно перейти в сообщения просмотра контроллера без аккаунта требовалось.
Вы не должны выдавать модальное предупреждение, прежде чем пытаться 'performSegueWithIdentifier' к следующему экрану. Удалите это и посмотрите, что произойдет, иначе опишите, что произойдет, когда вы зарегистрируетесь. – Paulw11
Как @ Paulw11 удаляет предупреждение, а затем выполняет segue, если вы все еще хотите получить предупреждение перед тем, как показывать следующий VC, добавьте обработчик завершения или блок обработчика блокировки к кнопке увольнения из Alert, чтобы вы могли выполнить segue в этом блоке , – iamyogish
Ах, спасибо @ Paulw11 и @iamyogish! Я просто переключил две линии, и это сработало отлично! –