iOS画面遷移処理の復習。

iOSエンジニアをやっておりますNNkamuraです。

 

iOSに関する練習をまとめたり、サンプルコードをアップしてみたり、この記事良かったよと宣伝してみたり、そんなブログにしようと思います。


  

さて、さっそくはじめよう。

先日レイアウトの話をしていまして

「この時のアニメーションは下から出てくるやつ、えーとプッシュだっけ?モーダルだっけ?」

と聞かれ、なんだかよく分かんなくなってしまい

「えーっと、まああれですよね、下から出てくるやつ。分かります。」

みたいな会話をしてしまいました。基礎中の基礎ではありますが、ざっとおさらいしたいと思います。

※調べたり実験してみて、分かりやすいように書いていますので正確さに欠けることがあります。ツッコミ歓迎です。
 

Storyboardを使ったSegueの話


f:id:NNkamura_Enginieer:20191022140144p:plain
segueの選択肢

Show...次の画面に普通に遷移

    NavigationControllerにて管理ができ、自動で戻るボタンが出たりする。

    ※NavigationControllerで管理しない場合、Present Modallyと同じ動き

    利用シーン:普段はShowでよい

 

Show Detail...文字通り詳細を表示

    UISplitViewControllerを利用時、2画面の片方に遷移先を表示させることができる。

    利用シーン:前画面が一覧、後画面が詳細の関係(1:N)の時。

 

Presend Modally...新しい画面を覆いかぶせる

    利用シーン:元画面から遷移→設定画面を表示→設定を元画面に反映といった(1:1)関係の時。

 

Present As Popover...新しい画面を覆いかぶせる。全画面ではない。

    もともとiPad用機能。大きな画面の端末で使いやすい機能。

    利用シーン:吹き出しで追加情報を入力するなど。

 

Custom...Costom遷移ができる。何も書いていないとエラー。 

Embed...ViewControllerの中にViewControllerがある時に使う。ContainerViewなど

RelationShip...NavigationbarやTabbarControllerなど、複数画面に効果がある。

 

 

コードで画面遷移

A.StoryboardのSegueを呼び出すパターン

performSegue(withIdentifier identifier: String, 
           sender: Any?)

B.storyboardを使わないパターン

present(_ viewControllerToPresent: UIViewController, 
    animated flag: Bool, 
  completion: (() -> Void)? = nil)

※viewControllerToPresentに情報を詰め込む。どのStoryboardか、Viewか、NavigationControllerを使うかなど。

で、結局プッシュとモーダルってなんだっけ…

現在のiOS開発においては非推奨のSegue。かなり雑だが
Push...Showみたいなやつ
Modal...Present Modallyみたいなやつ
と覚えておこう。

実装では使うことはないだろうが、古株iOSエンジニアの話し言葉や動作の話の中で出てくるかもしれない。
特にモーダルウィンドウという言葉はウェブ業界でも使われているようなので覚えておこう。
https://wa3.i-3-i.info/word11432.html

プッシュウィンドウという言葉は検索しても出ないので無いのかな。


詳しいsegueのおすすめ記事

私が書いたのは初歩の話なんだけども、以下のスライドにてSegueの詳細な話が書かれています。
iOS13で変わったことも書いていて大変興味深いので好きです。

https://speakerdeck.com/tokorom/advanced-segue-2019nian-falsesegueshi-qing?slide=0
理解しきれていない部分も多いので、後日サンプルコードを作りながら試してみたいと思います。