Firebase Auth使用来自其他类的文本输入创建新用户

时间:2017-12-07 22:51:41

标签: ios swift firebase firebase-authentication

我有两个视图控制器,第一个视图控制器包含用户输入的(电子邮件/用户名)文本字段。第二个视图控制器包含用户输入的(密码)文本字段。第二个视图控制器还包含一个Button,用于执行FireBase Auth代码以创建新用户。我想从第一个视图控制器类中获取电子邮件文本,并将该数据传输到第二个视图控制器类,以便成功创建新用户。我尝试使用全局变量,但它似乎没有用,任何帮助这个困境?感谢任何帮助!

https://databricks.com/blog/2015/03/20/using-mongodb-with-spark.html

2 个答案:

答案 0 :(得分:0)

如果你正确地做到这一点,全局变量虽然不是最好的解决方法,但是可以正常工作:

1声明一个全局变量,它应该在两个类之外(不要使用结构):

var emailOrUsername: String = ""

2实现textFieldDidEndEditing方法(假设您已将文本字段委托设置为self),并将文本字段中的字符串分配给emailOrUsername

func textFieldDidEndEditing(_ textField: UITextField) {
    emailOrUsername = emailTextField.text
}

3导航到下一个视图控制器后,只需引用该变量。简单。

编辑:虽然这种方法看似简单,但当你的应用逐渐变得越来越复杂时,维护起来会非常困难。所以,我建议你查看我对this question的答案(概念是相同的:协议)。

您可以使用的另一种方法是在第二个viewcontroller中定义emailOrUsername变量,然后在prepareForSegue中定义:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let secondViewController = segue.destination as? SecondViewController {
        secondViewController.emailOrUsername = emailTextField.text!
    }
}

答案 1 :(得分:0)

在这种情况下,我不建议使用全局结构,但是如果你想这样做的话。您可以创建一个新的swift文件并将结构移动到该文件。像这样:

globalData.email

您可以使用override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "nameOfYourSegue" { let controller = segue.destination as! NameOfViewControllerYourGoingTo controller.email = email }

获取该结构中的任何值

但是,我认为你在segue时传递数据更有意义。如果你不知道如何看待this question。然后你可以做这样的事情:

{{1}}

您可以查看thisthis以及this以获取更多信息。如果您还有疑问,请与我联系。