我想在
按下按钮时将值"电子邮件"从一个VC传递到另一个VC。所以我想用Firebase和swift 4创建一个注册,首先一个视图控制器问我电子邮件,输入电子邮件后,我点击下一步,另一个视图控制器会问我密码,然后点击注册。如何保存第一个视图控制器的电子邮件并将其传递给第二个视图控制器?然后将第一个VC的电子邮件和第二个VC的密码发送到Firebase?对不起我的英语。在实践中,它必须像Instagram注册一样工作。
import Foundation
import Firebase
import FirebaseAuth
import UITextField_Shake
internal class SignUpSegue0 : UIViewController {
@IBOutlet weak var labelwrongpass: UILabel!
@IBOutlet weak var Emailsign: UITextField!
func isValidEmail(testStr:String) -> Bool {
print("validate emilId: (testStr)")
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
let result = emailTest.evaluate(with: testStr)
return result
}
@IBAction func Nextsign1(_ sender: UIButton) {
guard let email = Emailsign.text else { return }
if Emailsign.text == "" {
self.labelwrongpass.text = "Please enter your email"
self.Emailsign.shake(10,withDelta: 5.0)
} else {
Auth.auth().fetchProviders(forEmail: email, completion: {
(providers, error) in
if error != nil {
print("Email disponibile")
self.labelwrongpass.text = "Email inserita correttamente"
self.labelwrongpass.textColor = UIColor.green
func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if segue.destination is SignUpSegue1
{
let vc = segue.destination as? SignUpSegue1
vc?.email = ""
}
}
} else if providers != nil {
print("L'email inserita è già esistente")
self.labelwrongpass.text = nil
self.labelwrongpass.text = "L'email inserita è già esistente"
self.Emailsign.shake(10,withDelta: 5.0)
}
})
}
}
}
您可以在目标控制器中创建 var
:class DestinationViewController: UIViewController {
var variableToShare : String?
//the rest of the class methods....
在你的控制器中覆盖PrepareForSegue和类似的东西:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
// Create a variable that you want to send
var toShare = "Email"
// Create a new variable to store the instance of DetinationViewController
let destinationVC = segue.destinationViewController as DetinationViewController
destinationVC.variableToSharer = toShare
}
}