Swift如何使用Segue在视图控制器上传递数据?

时间:2016-04-26 09:28:16

标签: swift closures

我想这样做 enter image description here

将数据从A传递到C

喜欢:在A中键入一些字符串,然后点击按钮到B,然后点击按钮到C

C的标签

中显示字符串

我找到了一些这样的传递数据

前:

a班级

中的

let bController = segue.destinationVieController

bController.string = "xxx"

但它只是A到B

如何将数据从A传递到C

现在,我使用NSNotificationCetner来完成这项工作,但我想学习如何使用segue闭包

如果真的很容易,请告诉我关键字

因为我只是搜索AB ...

谢谢!

2 个答案:

答案 0 :(得分:1)

您正在使用segue从A-> B传递字符串,因此您现在在控制器B中拥有该字符串。从B->传递相同的字符串。 C使用如下的segue

let cController = segue.destinationVieController

cController.string = string

其中string是控制器B中的变量,您从A-> B中指定了值

答案 1 :(得分:0)

您可以立即执行b-> c中的segue以准备segue

//VCA
override func prepareForSegue(segue : UISegue, sender: AnyObject?) {

   if segue.identifier == "AtoB" {
      //Cast destination VC as a your B VC
      let bVC = segue.destinationViewController as! BVC 
      //Set b's .string property to the string property you're going to send to c
      bVC.string = self.string
      //perform the segue that goes from b to c
      bVC.performSegueWithIdentifier("BtoC")

   }

}
//VCB
override func prepareForSegue(segue : UISegue, sender: AnyObject?) {

   if segue.identifier == "BtoC" {
      //Cast destination VC as a your C VC
      let cVC = segue.destinationViewController as! CVC 
      //Set c's .string property to the string property that you now go from 
      cVC.string = self.string

      //Now you will have segue'd to C passing the string you got from a
   }

}

确保您的segue.identifier与故事板中设置的匹配。