[Swift]コードで画面遷移を行う3つの方法

2016.04.23
画面遷移の記事のアイキャッチ画像

こんにちは、プログラマーの@Yuuです。

iPhoneアプリを作る際には必ず使うと言っても過言ではない画面遷移。
storyboardの「segue」を使って遷移させるのではなく、Swiftのコード上で画面遷移をする方法をご紹介します。

今回は以下3パターンをご紹介。
(ViewControllerと書くと長いのでこの記事では時々VCと書きます)

  • 同じstoryboard上に配置したVCへの遷移方法
  • 違うstoryboard上に配置したVCへの遷移方法(遷移先が初期VC)
  • 違うstoryboard上に配置したVCへの遷移方法(VCのIdentifierを使用)

2番目の方法の「初期VC」というのは「Initial View Controller」と言って、storyboardを呼び出した時1番最初に呼び出すViewControllerの事です。

スポンサーリンク

共通して行う事の確認

上記3つの方法のコードは書き方に違いはありますが、やっていることは一緒で、必ず以下の3つを行います。

  1. 遷移先のViewControllerがあるstoryboardをインスタンス化
  2. 遷移先のViewControllerをインスタンス化
  3. 遷移先のViewControllerに遷移する

これさえ分かっていれば画面遷移は難しくありません。

では解説していきたいと思います。

解説する前に、3つの方法を紹介をするあたり遷移先のViewControllerのクラスが「NextViewController」という名前である事を前提に説明していきます

それぞれの遷移方法

1. 同じstoryboard上に配置したVCへ遷移

以下の画像のように同じstoryboard上にある画面への遷移方法

同じstoryboardに2つのVC

まず、遷移先のNextViewControllerのIdentityを設定します。

storyborad上でNextViewControllerを選択
Show the Identity inspector -> Identity -> Storyboard IDに「next」と設定

VCにItentityを設定

画面遷移したいところに以下を記述

コードの解説をザックリ行うと

  1. 1行目で遷移したいViewControllerがあるstoryboardを指定
  2. 2行目で遷移先のViewControllerを指定
  3. 3行目で遷移を行う

となります。
今回は同じstoryboardなのでself.storyboard!、つまり「自分自身(遷移前のViewController)がいるのと同じstoryboardだよ!」と言っているわけですね。

「あれ?てことは、ここの指定を他のstoryboardに指定すれば、他2つの方法も出来るんじゃね?」と思った人はその通りでございます。

2. 違うstoryboard上に配置したVCへ遷移(遷移先が初期VC)

以下のように2つのstoryboardがあり、それぞれにViewControllerがある場合

mainstoryboardのVC

main2storyboardのintial VC

遷移先のstoryboard名は「Main2.storyboard」という名前で作成しました。

遷移先のstoryboard名

ここでは遷移先のViewController(NextViewController)をInitial View Controllerに設定します。

Main2.storyboardに配置されたViewControllerの
Show the Attributes inspector -> View Controller -> Is Initial View Controller
にチェックマークを付けます。

is intialにチェックマークをつける

するとNext View Controllerの左側に灰色の矢印マークが付いているはずです。

これでNextViewControllerがInitial View Controllerになりました。

そして画面遷移を行うところで以下を記述

3. 違うstoryboard上に配置したVCへ遷移(VCのIdentifierを使用)

2つのstoryboardにそれぞれViewControllerを配置

mainstoryboardのVC

今度はintialされていない

ただし、Main2.storyboardのNextViewControllerの「Is Initial View Controller」のチェックマークは外しています。

is intialのチェックを外す

そして1番目の時にやったようにNextViewControllerのIdentityに「next」と入力します。

この状態で遷移する方法は以下のとおり

1と2を組み合わせたような感じですね。

前の画面に戻る方法(おまけ)

遷移する方法を書いたので、おまけで遷移前のViewControllerに戻る方法も書いておきます。

以下の一文を戻りたい場面で呼び出せば遷移前のViewControllerに戻る事が出来ます。

あとがき

理屈さえ分かってしまえば、Segueを使わなくても画面遷移は簡単ですね!

ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧

画面遷移の記事のアイキャッチ画像

この記事が気に入ったらいいね!
して最新情報をチェックしよう!

スポンサーリンク