iosアプリの画面遷移をプログラムから呼び出す
プログラムから任意のタイミングでsegueを呼び出したかったが、やり方をググっても何故か中々ヒットしなかったのでメモしておく。
ついでにViewControllerを指定して画面遷移する方法もメモしておく。
Segueを使用して遷移する場合
事前準備
StoryBoard上で、ViewController間をつなぐsegueを作っておく。 作ったsegueのidentifierはちゃんと埋めておく。
コード
以下のコードでsegueを呼び出せる。
performSegue(withIdentifier: "segueのidentifier", sender: self)
またsegueが呼ばれた際の遷移前処理はVieController内で以下のように書ける。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // やりたい処理 }
遷移先の画面に何か渡したい時には下記のように利用するらしい。
//segueを呼び出す処理 func callSegue( ) { let message = "hogehoge" performSegue(withIdentifier: "targetSegue", sender: message) } //次のviewのcontrollerに値を渡す override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if (segue.identifier == "targetSegue") { let nextViewController : NextViewController = segue.destination as! NextViewController nextViewController.item = sender as! String } }
ViewControllerを指定して遷移する場合
プログラムから画面遷移する場合、こっちの方がよく使われるかも
事前準備
storyboard上で遷移先のViewControllerのIdentifierを設定しておく
コード
let storyboard = UIStoryboard(name: "Main", bundle: nil) let nextView = storyboard.instantiateViewController(withIdentifier: "nextViewController") let navi = UINavigationController(rootViewController: nextView) navi.modalTransitionStyle = .coverVertical self.present(navi, animated: true, completion: nil)