web-dev-qa-db-ja.com

SwiftでperformSegueWithIdentifierを使用してセグエを実行するときにパラメータを渡す方法

私はプログラムでセグエを呼んでいますが、どのようにパラメータを渡すことができますか?

@IBAction func update(sender: AnyObject) {

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

スウィフト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"
            }
        }
    }
22
Ryan Huebert

PerformSegueWithIdentifierメソッドは2つの引数を取ります。1つはセグエ識別子、2は渡しているパラメータAnyObject?

@IBAction func update(sender: AnyObject) {

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

次に、prepareForSegueメソッドでセグエ識別子を確認し、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
    }
}
15
Ahmed Onawale

セグエに備えてデータを渡すことができます。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
        if (segue.identifier == "showUpdate") {

            if let vc: DestinationVC = segue.destinationViewController as? DestinationVC {
                  vc.variable = variableToPass
            }

        }
 }
3
D. Greg