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)