我以编程方式调用segue,任何人都可以帮助我如何传递参数?
@IBAction func update(sender: AnyObject) {
self.performSegueWithIdentifier("showUpdate", sender: nil)
}
答案 0 :(得分:18)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ExampleSegueIdentifier" {
if let destinationVC = segue.destination as? ExampleSegueVC {
destinationVC.exampleStringProperty = "Example"
}
}
}
斯威夫特3:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "ExampleSegueIdentifier" {
if let destinationVC = segue.destinationViewController as? ExampleSegueVC {
destinationVC.exampleStringProperty = "Example"
}
}
}
答案 1 :(得分:12)
performSegueWithIdentifier方法有两个参数,1。segue标识符,2。您传递的参数类型 AnyObject?
@IBAction func update(sender: AnyObject) {
self.performSegueWithIdentifier("showUpdate", sender: sender)
}
然后在prepareForSegue方法中,检查segue标识符并将sender参数转换为您之前传递的类型。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showUpdate" {
guard let object = sender as? ObjectToUpdateType else { return }
let dvc = segue.destinationViewController as! DestinationViewController
dvc.objectToInject = object
}
}
答案 2 :(得分:3)
准备segue可以传递数据。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "showUpdate") {
if let vc: DestinationVC = segue.destinationViewController as? DestinationVC {
vc.variable = variableToPass
}
}
}