ボタンをタップした時じゃなくて好きなタイミングで画面遷移したい!
前回までは「ボタンをタップした際に画面遷移する」というように
storyboard上の部品を用いて画面遷移を実装しました。
今回はボタンに限らず、任意のタイミングで画面遷移を行う画面遷移の
実装方法を見ていきたいと思います。
前回と同様にピンク画面と緑画面を使用して説明していきます。ViewControllerも各々の
ものを作成し終わっているものとします。
もちろんピンク画面から緑画面へ遷移する、というのも変わりありません。
【手順1】画面上部のView Controllerアイコンから遷移先の緑画面とを紐付ける
やり方はほとんど変わらず、ボタンなどのstoryboard上の部品からではなく
画面そのもののViewControllerから接続します。
すると、これまた同様に画面遷移の方法を選択するポップアップが表示されますので、
「Present Modally」を選択します。
ここまではほぼ同じ手順ですが、このポップアップをよく見てみると前回までのものと若干
異なっています。というのもポップアップの1番上に書かれている文言が「Manual Segue」
となっていますね。前回のようにボタンから接続する場合は文言が「Action Segue」と
なっていました。
今回は「Manual」、つまり遷移するタイミングなどは自分で決めてねってことです。
【手順2】接続されたSegueに任意の識別子を設定する
この「Manual Segue」の場合は何個でも遷移先を作成することができるので、各々の
セグエに名前をつけて識別する必要があります。
こんなこともできてしまうのです。
※ボタンなどの部品を「Action Segue」で接続する場合は、必ず1部品から1画面への
遷移しかできません。
では、名前をつけてみましょう。
画面をつないでいるセグエをクリックして選択し、画面の右上からアトリビュートインスペクタを
開きます。その1番上にIdentifierの欄がありますので、「toGreen」というような任意の名前を
つけます。これがこのセグエの名前になります。
【手順3】performSegueWithIdentifier(identifier: String, sender: AnyObject?)メソッドを実装する
このメソッドを利用することで任意のセグエを呼び出すことができます。
もちろんPinkViewController.swift内のどこかに記述します。
引数は2つ必要です。
identifierには識別子を入力します。先ほど作成した「Manual Segue」の名称が「toGreen」ですので、これを
記述します。
senderはAnyObject型ですので何を入れても良いのですが、あまり使い道を見出せなかったのでnilで大丈夫でしょう。
self.performSegueWithIdentifier("toResult",sender: nil)
これをPinkViewController.swiftファイル内のどこかに記述します。
今回はここまでとします。次回はこの手順を踏まえて、「5秒経過したら画面遷移する」
というようなプログラムを実装してみたいと思います。
TechProjin 開発系基礎講座 連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
AIなどで注目急上昇!これから学ぶならPython!!
独学で学ぶ-pythonプログラミング 連載
汎用性◎ 定番プログラミング言語JAVA
Java基礎講座 連載