ボタンをタップした時じゃなくて好きなタイミングで画面遷移したい!

この記事は2016年1月6日に書かれたものです。内容が古い可能性がありますのでご注意ください。


前回までは「ボタンをタップした際に画面遷移する」というように
storyboard上の部品を用いて画面遷移を実装しました。

今回はボタンに限らず、任意のタイミングで画面遷移を行う画面遷移の
実装方法を見ていきたいと思います。

前回と同様にピンク画面と緑画面を使用して説明していきます。ViewControllerも各々の
ものを作成し終わっているものとします。
もちろんピンク画面から緑画面へ遷移する、というのも変わりありません。

【手順1】画面上部のView Controllerアイコンから遷移先の緑画面とを紐付ける

やり方はほとんど変わらず、ボタンなどのstoryboard上の部品からではなく
画面そのもののViewControllerから接続します。
s20_1
すると、これまた同様に画面遷移の方法を選択するポップアップが表示されますので、
「Present Modally」を選択します。
s20_2
ここまではほぼ同じ手順ですが、このポップアップをよく見てみると前回までのものと若干
異なっています。というのもポップアップの1番上に書かれている文言が「Manual Segue」
となっていますね。前回のようにボタンから接続する場合は文言が「Action Segue」と
なっていました。
s20_3
今回は「Manual」、つまり遷移するタイミングなどは自分で決めてねってことです。

【手順2】接続されたSegueに任意の識別子を設定する

この「Manual Segue」の場合は何個でも遷移先を作成することができるので、各々の
セグエに名前をつけて識別する必要があります。
s20_4
こんなこともできてしまうのです。
※ボタンなどの部品を「Action Segue」で接続する場合は、必ず1部品から1画面への
遷移しかできません。

では、名前をつけてみましょう。
画面をつないでいるセグエをクリックして選択し、画面の右上からアトリビュートインスペクタを
開きます。その1番上にIdentifierの欄がありますので、「toGreen」というような任意の名前を
つけます。これがこのセグエの名前になります。
s20_5

【手順3】performSegueWithIdentifier(identifier: String, sender: AnyObject?)メソッドを実装する

このメソッドを利用することで任意のセグエを呼び出すことができます。
もちろんPinkViewController.swift内のどこかに記述します。
引数は2つ必要です。
identifierには識別子を入力します。先ほど作成した「Manual Segue」の名称が「toGreen」ですので、これを
記述します。
senderはAnyObject型ですので何を入れても良いのですが、あまり使い道を見出せなかったのでnilで大丈夫でしょう。

self.performSegueWithIdentifier("toResult",sender: nil)

これをPinkViewController.swiftファイル内のどこかに記述します。

今回はここまでとします。次回はこの手順を踏まえて、「5秒経過したら画面遷移する」
というようなプログラムを実装してみたいと思います。

  • このエントリーをはてなブックマークに追加

PAGE TOP