はじめに
iOSアプリ開発中にコード上で任意のタイミングで画面遷移したかったので調べたときのメモ
状態
遷移元のclass LoginViewController
遷移先のclass WebViewController
コード上で操作
1. Storybordから遷移先のViewControllerにidentifierを付加:webView
2. ↓のコードを遷移したいポイントに書く
LoginViewController.swift
let storyboard: UIStoryboard = self.storyboard!
let webView: WebViewController = storyboard.instantiateViewController(withIdentifier: "webView") as! WebViewController
self.present(webView, animated: true, completion: nil)
segueを使った遷移をコードで書く
1. Storybordで遷移元のViewControllerから遷移先のViewControllerへsegueを登録? (ctrl押してドラッグ)
2. segueにidentifierを付加: toWebView
3. ↓のコードを遷移したいポイントに書く
LoginViewController.swift
self.performSegue(withIdentifier: "toWebView", sender: nil)
値の受け渡しをしたい場合
以下の作業を追加
1. performSegue()のsenderに渡したい値を追加して、遷移先に受け取るための変数を宣言
2. 遷移元でprepare関数?をoverride
例えば配列を渡したいとき
LoginViewController.swift
self.performSegue(withIdentifier: "toWebView", sender: ["HOGE": "hoge"])
・・・
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toWebView" {
let webView = segue.destination as! WebViewController
webView.param = sender as! [String : String]
}
}
WebViewController.swift
class WebViewController: UIViewController {
var param: [String: String] = [:]
・・・
}