Ios 使用segue在视图控制器之间传递变量

Ios 使用segue在视图控制器之间传递变量,ios,xcode,swift,segue,xcode6,Ios,Xcode,Swift,Segue,Xcode6,我使用Swift和Xcode 6,并希望使用Segue将变量从一个视图控制器传递到另一个视图控制器 我已经创建了一个名为“MainToTimer”的序列,一旦按下按钮,它就会触发。我希望能够在第二个视图控制器上使用名为“Duration”的变量 是否可以传递多个变量和常量 我需要与每个视图控制器关联哪些代码 先谢谢你 在第一个ViewController中放置此项(对于模式序列): 将ViewController2更改为第二个ViewController的名称。在ViewController2中

我使用Swift和Xcode 6,并希望使用Segue将变量从一个视图控制器传递到另一个视图控制器

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

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

我需要与每个视图控制器关联哪些代码


先谢谢你

在第一个
ViewController
中放置此项(对于模式序列):

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

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

就这样。您将在第一个
视图控制器的
持续时间2
值中设置
持续时间
的值。首先,设置属性以将变量保存在第二个视图控制器(目标)中

然后让你的按钮触发你的自定义序列。使用变量('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的“sender”参数传递多个变量和常量。如果要传入多个数据,请将它们放入一个数组中,并使该数组成为发送方

SWIFT 3
从Swift 3开始,方法
prepareForSegue(segue:UIStoryboardSegue!,发送者:AnyObject!)
已更改为
prepare(segue:UIStoryboardSegue,发送者:Any?

可能重复感谢您的评论。我试图采纳你的建议,但收到了一个错误。(1) 在self.performsguewithidentifier(“MainToTimer”,发送方持续时间)行中,我收到一个错误,表示类型“Duration”不符合Destination行中的协议“Any Object”(2)。Duration2=持续时间我收到一个错误-预期的成员名称或类型名称后的构造函数调用。很抱歉,回复太晚。Xcode 6的更高版本更改了该方法。我已经在上面更新了它,现在应该可以正常工作了。
if(segue.identifier=“maintimer”){
需要是
if(segue.identifier==“maintimer”){
ur comparing,not assigningOK…我知道这是如何工作的…我甚至可能会使用它…但我有一种不好的感觉,因为这不是sender参数的真正目的。通常我会在后面找到为什么不应该这样做,但我现在想不出任何事情。我应该将覆盖函数放在哪里?哪个类,它是befo我是否执行segue功能?
class YourFirstViewController: UIViewController {
    @IBAction func buttonTapped(sender: AnyObject) {
        self.performSegueWithIdentifier("MainToTimer", sender: duration)
    }
}
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
    }
}