我使用Swift和Xcode 6,并希望通过Segue从一个视图控制器传递变量到另一个视图控制器。
我创建了一个名为“MainToTimer”的segue,它在按下按钮时触发。我想能够在第二个视图控制器中使用名为“Duration”的变量。
是否可以传递多个变量和常量?
每个视图控制器需要有哪些代码关联?
提前致谢。
首先,在您的第二个视图控制器(目标)中设置属性/属性,以保存您的变量。
class YourSecondViewController: UIViewController {
var duration:Double?
}
然后让你的按钮触发自定义segue。使用你的变量('duration')作为sender的参数。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'参数传递多个变量和常量。如果您有多个要传递的数据,请将它们放入数组中并将该数组作为sender。
SWIFT 3从Swift 3开始,方法prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
已更改为prepare(for segue: UIStoryboardSegue, sender: Any?)
ViewController
中放置以下内容(用于模态转场):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)
就是这样。您将在ViewController
中的Duration
变量的值赋给了Duration2
变量。