【Swift】senderを駆使した値渡し遷移
以下の記事で、値を渡しながら遷移する方法を述べた。
↓
しかし、その後にTwitterで違う方法で実装できる方法を返信ツイートで教えてもらったので、残す。
解説
・普通なら、渡す用の変数に渡したい値を渡し、その変数をprepare内で遷移先に渡す方法を行なっていた
・今回の方法では、渡したい値をperformeSegueのsenderに渡し、prepare内で宣言した変数にsenderを代入している
・つまり、①渡すための変数の宣言文、②変数に渡したい値を代入する文、この2つを省略できる
・エラーのことを考えて、guard let文で実装
コード
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loadinvarhe view, typically from a nib. } @IBAction func first(_ sender: Any) { performSegue(withIdentifier: "perform", sender: "first") } @IBAction func second(_ sender: Any) { performSegue(withIdentifier: "perform", sender: "second") } @IBAction func third(_ sender: Any) { performSegue(withIdentifier: "perform", sender: "third") } //遷移する際の処理 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "perform" { guard let svc = segue.destination as? SecondViewController else { return } guard let text: String = sender as? String else { return } svc.text = text } } }