如何在Swift中使用performSegueWithIdentifier执行segue时传递参数

时间:2016-02-14 21:39:40

标签: ios iphone xcode swift

我以编程方式调用segue,任何人都可以帮助我如何传递参数?

@IBAction func update(sender: AnyObject) {

    self.performSegueWithIdentifier("showUpdate", sender: nil)
}

3 个答案:

答案 0 :(得分:18)

斯威夫特4:

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
            }

        }
 }