如何使用segue将两个文本字段项传递给另一个ViewController
问题描述:
我希望我的用户在进入“id”和“password”后转到TableViewController,但是当我们使用prepare和performsegue方法时,我们只发送一个变量。如何使用segue将两个文本字段项传递给另一个ViewController
@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)
}
正如你可以看到这里我想执行两种不同的塞格斯,我也创造了从视图控制器命名为“emailSegue”和“passwordSegue”的tableview控制器故事板2个塞格斯,但在准备功能我当我运行代码时,它只能为其中一个“emailSegue”做准备,它会编译,并且可以将电子邮件附加到数组中,但不能附加密码。
所以我想知道如何让他们都被发送?有没有办法为2个不同的赛段做准备?无法在其他地方找到它的例子。
在此先感谢。
答
您只能执行一个 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])
}
+0
你是一个拯救生命的人!谢谢。 – emrepun
你一次只能一次继续。你不能同时出现两个视图控制器。 –
你可以'继续'到一个视图控制器,你也可以发送数据到不同的视图控制器在继续之前 – julekgwa