ベルマークのない自由帳

ベルマークのない自由帳

有益と無益の境界例

iOSアプリ開発メモ No.9 -画面遷移の条件分岐-

選択されたパーツによって遷移するViewControllerを違うものにしたい!
でも1つのButtonからは1つのSegueしか生えてこないから、複数のViewControllerを選ない…。
 

解決法

ViewConrollerからのSegue

方法は意外と簡単で、ButtonなどのパーツからではなくViewControllerそのものからSegueをにゅっと伸ばします。

 

f:id:Mantra:20180214211442p:plain

 
そうしたら、そのSegueを選択して画面右側のところ(Attributes Inspector)を見ます。
Identifier(識別子)にわかりやすい適当な名前をつけましょう。
 

f:id:Mantra:20180214211547p:plain

 
これで「条件によって異なるViewControllerに遷移する」準備が整いました!
 

ちょっとコーディング

Identifierでつけた名前をプログラム上で指定することになります。
それを可能にするのがperformSegue()というメソッドです。
実際の書き方としては
self.performSegue(withIdentifier: “Segueの名前(Identifier)", sender: nil)
となります。
(senderのあとがなんでnilなのかは私も知りません。)
 
たとえばhogeという変数に入っている値によって、[次へ]というButtonをおした時に遷移するViewControllerを変えたい」としましょう。
まずは[次へ]ButtonActionとしてConnectしてnextHogeという名前をつけます。
次にif文で条件式を書いて、実行部分で先程のperformSegue()メソッドを使っていきます。
引数の(withIdentifier: “”)の部分に呼び出したいSegueの名前を指定します。
 
    @IBAction func nextHoge(_ sender: Any) {
        if (hoge == 1){
            self.performSegue(withIdentifier: “firstSegue", sender: nil)
        } else if(hoge == 0){
            self.performSegue(withIdentifier: “secondSegue", sender: nil)
        } else if (hoge == -1){
            self.performSegue(withIdentifier: “thirdSegue", sender: nil)
        }
    }

 

これで完了!
新しいメソッドが出て来るぐらいで特別難しいことはなかった感じですね。
 
今回参考にしたページ。

 

 
公式ドキュメント