Swift 如何使用segue将两个文本字段项传递给另一个ViewController

Swift 如何使用segue将两个文本字段项传递给另一个ViewController,swift,segue,uistoryboardsegue,Swift,Segue,Uistoryboardsegue,我希望我的用户在输入“id”和“密码”后转到TableViewController,但当我们使用prepare和performsegue方法时,我们只发送一个变量 @IBAction func logIn(_ sender: Any) { performSegue(withIdentifier: "emailSegue", sender: emailTextField.text) performSegue(withIdentifier: "passwordSegue", send

我希望我的用户在输入“id”和“密码”后转到TableViewController,但当我们使用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到tableview controller,分别命名为“emailSegue”和“passwordSegue”,但在prepare函数中,我在运行代码时只能准备其中一个,即“emailSegue”,它可以编译,我可以将电子邮件附加到数组中,但不能添加密码

所以我想知道我怎样才能把它们都送去?有没有办法准备两个不同的赛段?在其他任何地方都找不到它的示例


提前感谢。

您一次只能执行一个序列,因此,如果希望进行转换,请仅调用一次
performsgue
,并在目标视图控制器的
prepareforsgue
中设置两个变量。最好通过检查
segue.identifier
属性来检查应准备的segue类型。

您一次只能执行一个segue,因此,当您希望发生转换时,只调用
performsgue
一次,并在目标视图控制器的
prepareforsgue
中设置两个变量。最好通过检查
segue.identifier
属性来检查应准备的segue类型。

您只能执行一个segue,但可以发送多个参数

只需传递数组而不是单个字符串:

@IBAction func logIn(_ sender: Any) {
   performSegue(withIdentifier: "emailSegue", 
                sender: [emailTextField.text!, passwordTextField.text!])
}


PS:与其强制展开
文本
属性,不如验证它们:

@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])
}

只能执行一个序列,但可以发送多个参数

只需传递数组而不是单个字符串:

@IBAction func logIn(_ sender: Any) {
   performSegue(withIdentifier: "emailSegue", 
                sender: [emailTextField.text!, passwordTextField.text!])
}


PS:与其强制展开
文本
属性,不如验证它们:

@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])
}

你一次只能跳一次。您不能同时显示两个视图控制器。您可以
segue
切换到一个视图控制器,也可以在切换之前将数据发送到不同的视图控制器。您一次只能切换一次。您不能同时显示两个视图控制器。您可以
segue
切换到一个视图控制器,也可以在切换之前将数据发送到不同的视图控制器。非常感谢!我解决了我的问题,很感激!听到这个消息太好了!:)谢谢!我解决了我的问题,很感激!听到这个消息太好了!:)