[英]Passing variables between View Controllers using a segue
我使用Swift和Xcode 6,并希望使用Segue将变量从一个View Controller传递给另一个。
我创建了一个名为'MainToTimer'的segue,按下按钮后触发。 我希望能够在第二个View Controller上使用名为'Duration'的变量。
是否可以传递多个变量和常量?
我需要为每个View Controller关联哪些代码?
先感谢您。
首先,设置属性/属性以将变量保存在第二个视图控制器(目标)中。
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的'sender'参数传递多个变量和常量。 如果要传入多个数据,请将它们放在一个数组中,并使该数组成为发送方。
SWIFT 3从Swift 3开始,方法prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!)
已经改为prepare(for segue: UIStoryboardSegue, sender: Any?)
在第一个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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.