Posted at

【Swift 3】UIStoryboardSegue をコードから呼んで画面遷移

More than 1 year has passed since last update.

UIStoryboardSegue をコードから呼ぶ時の記述をメモ。

FirstViewController から SecondViewController へ画面遷移したいとする。


Storyboard で UIStoryboardSegue を作成

Storyboard で FirstViewController を Ctrl + ドラッグで SecondViewController へつなぐ。

identifier を設定しておく。ここでは toSecondViewController とする。


画面遷移したいタイミングで performSegue

画面遷移を行いたいタイミングで performSegue を呼ぶ。


FirstViewController.swift


class FirstViewController: UIViewController {

// Anything...

func segueToSecondViewController() {
self.performSegue(withIdentifier: "toSecondViewController", sender: nil)
}

}



画面遷移先に何かしらを受け渡したい場合

performSeguesender 引数は Any? 型。

画面遷移先に何かしらを受け渡したい場合は sender にセットし、以下のようにする。


FirstViewController.swift


class FirstViewController: UIViewController {

let parameters = ["hello": "こんにちは", "goodbye": "さようなら"]

// Anything...

func segueToSecondViewController() {
self.performSegue(withIdentifier: "toSecondViewController", sender: self.parameters)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toSecondViewController" {
let secondViewController = segue.destination as! SecondViewController
secondViewController.parameters = sender as! [String : String]
}
}

}



SecondViewController.swift


class SecondViewController: UIViewController {

var parameters: [String : String] = [:] // 画面遷移後は ["hello": "こんにちは", "goodbye": "さようなら"]

// Anything...
}


sender のダウンキャストの時に、画面遷移先と型が一致するようにする。