如何使用 segue 将两个文本字段条目传递给另一个 ViewController
How to pass two textfield entries to another ViewController with using segue
我希望我的用户在输入 "id" 和 "password" 后转到表 ViewController,但是当我们使用 prepare 和 performsegue 方法时,我们只发送一个变量。
@IBAction func logIn(_ sender: Any) {
performSegue(withIdentifier: "emailSegue", sender: emailTextField.text)
performSegue(withIdentifier: "passwordSegue", sender: passwordTextField.text)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let guest = segue.destination as! ExpenseTableViewController
guest.incoming.append(sender as! String)
}
正如你在这里看到的,我想执行两个不同的转场,我还在故事板上创建了两个转场,从 ViewController 到名为 "emailSegue" 和 "passwordSegue" 的表视图控制器,但是在 prepare 函数中,当我 运行 代码时,我只能为其中的一个 "emailSegue" 做准备,它确实编译并且我可以将电子邮件附加到数组而不是我的密码。
所以我想知道如何才能将它们都发送出去?有没有办法为 2 个不同的 segue 做准备?无法在其他任何地方找到它的示例。
提前致谢。
您一次只能执行一个 segue,因此当您希望发生转换时只调用 performSegue
一次,并在 prepareForSegue
中为目标视图控制器设置两个变量。最好通过检查 segue.identifier
属性.
来检查应该准备什么类型的 segue
您只能执行一个 segue,但您可以发送多个参数。
只需传递一个数组而不是单个字符串:
@IBAction func logIn(_ sender: Any) {
performSegue(withIdentifier: "emailSegue",
sender: [emailTextField.text!, passwordTextField.text!])
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "emailSegue" {
let guest = segue.destination as! ExpenseTableViewController
guest.incoming.append(contentsOf: sender as! [String])
}
}
PS:与其强制展开 text
属性,不如验证它们:
@IBAction func logIn(_ sender: Any) {
guard let email = emailTextField.text, !email.isEmpty,
let password = passwordTextField.text, !password.isEmpty else {
// show an alert
return
}
performSegue(withIdentifier: "emailSegue", sender: [email, password])
}
我希望我的用户在输入 "id" 和 "password" 后转到表 ViewController,但是当我们使用 prepare 和 performsegue 方法时,我们只发送一个变量。
@IBAction func logIn(_ sender: Any) {
performSegue(withIdentifier: "emailSegue", sender: emailTextField.text)
performSegue(withIdentifier: "passwordSegue", sender: passwordTextField.text)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let guest = segue.destination as! ExpenseTableViewController
guest.incoming.append(sender as! String)
}
正如你在这里看到的,我想执行两个不同的转场,我还在故事板上创建了两个转场,从 ViewController 到名为 "emailSegue" 和 "passwordSegue" 的表视图控制器,但是在 prepare 函数中,当我 运行 代码时,我只能为其中的一个 "emailSegue" 做准备,它确实编译并且我可以将电子邮件附加到数组而不是我的密码。
所以我想知道如何才能将它们都发送出去?有没有办法为 2 个不同的 segue 做准备?无法在其他任何地方找到它的示例。
提前致谢。
您一次只能执行一个 segue,因此当您希望发生转换时只调用 performSegue
一次,并在 prepareForSegue
中为目标视图控制器设置两个变量。最好通过检查 segue.identifier
属性.
您只能执行一个 segue,但您可以发送多个参数。
只需传递一个数组而不是单个字符串:
@IBAction func logIn(_ sender: Any) {
performSegue(withIdentifier: "emailSegue",
sender: [emailTextField.text!, passwordTextField.text!])
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "emailSegue" {
let guest = segue.destination as! ExpenseTableViewController
guest.incoming.append(contentsOf: sender as! [String])
}
}
PS:与其强制展开 text
属性,不如验证它们:
@IBAction func logIn(_ sender: Any) {
guard let email = emailTextField.text, !email.isEmpty,
let password = passwordTextField.text, !password.isEmpty else {
// show an alert
return
}
performSegue(withIdentifier: "emailSegue", sender: [email, password])
}