使用segue在View Controllers之间传递变量

时间:2014-09-01 01:27:33

标签: ios xcode swift segue xcode6

我使用Swift和Xcode 6,并希望使用Segue将变量从一个View Controller传递给另一个。

我创建了一个名为' MainToTimer'一旦按下按钮就会触发。我希望能够使用名为' Duration'的变量。在第二个视图控制器上。

是否可以传递多个变量和常量?

每个View Controller需要哪些代码?

提前谢谢你。

2 个答案:

答案 0 :(得分:41)

首先,设置属性/属性以将变量保存在第二个视图控制器(目标)中。

class YourSecondViewController: UIViewController {
    var duration:Double?
}

然后让您的按钮触发您的自定义segue。使用您的变量(' duration')作为发件人的参数。

class YourFirstViewController: UIViewController {
    @IBAction func buttonTapped(sender: AnyObject) {
        self.performSegueWithIdentifier("MainToTimer", sender: duration)
    }
}

最后,通过覆盖prepareForSegue方法传递此发件人数据:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "MainToTimer") {
        let secondViewController = segue.destinationViewController as YourSecondViewController
        let duration = sender as Double
        secondViewController.duration = duration
    }
}

是的,再次使用'发送者'也可以传递多个变量和常量。 prepareForSegue的参数。如果您要传入多个数据,请将它们放入数组中,并使该数组成为发送方。

答案 1 :(得分:6)

在第一个ViewController位置(对于模态segue):

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let theDestination = (segue.destinationViewController as ViewController2)
    theDestination.Duration2 = Duration
}

ViewController2更改为第二个ViewController的名称。在ViewController2中创建一个类变量:

var Duration2 = (whatever the type - UInt8 I guess for time)

那就是它。从Duration2开始,Duration的值为ViewController