AppDelegate.swiftから画面遷移する方法【2つの実装パターンを解説】
AppDelegate.swiftから特定のタイミングで画面遷移させる方法を解説。ローカル通知受信時などに使える2つの実装パターンを比較し、それぞれのメリット・デメリットを紹介します。
はじめに環境画面遷移方法まず、遷移させたいControllerのStoryboard IDを設定します1つ目の方法AppDelegateでWindowを生成して、生成したWindowにControllerを設定し遷移させる2つ目の方法遷移元となるControllerで画面遷移するメソッドを定義し、AppDelegate.swiftで呼び出す2つの遷移方法の違いについて1つ目の画面遷移方法のメリット1つ目の画面遷移方法のデメリット2つ目の画面遷移方法のメリットAppDelegate.swiftでの記述が短いまとめおわりに参考サイト
はじめに
AppDelegateクラスでローカル通知を受け取った際に、画面遷移させたいといった場合などを想定しています。
Controller間の画面遷移は、以下の記事等をご参考にしてください。(いずれもSwift4系です)
環境
- macOS Mojavaのバーション:10.14
- Xcodeのバーション:10.1
- Swiftのバーション:4.2.1
画面遷移方法
では、本題に入ります。
これから、2つの方法について紹介していきます。どちらの方法も、画面遷移させたいControllerを指定するためを設定する必要がありますが、それ以外は、コードで完結します。
まず、遷移させたいControllerのStoryboard IDを設定します

上の画像の赤く囲った部分を、以下のように変更します。任意の適した値に設定してください。

1つ目の方法
AppDelegateでWindowを生成して、生成したWindowにControllerを設定し遷移させる
以下の処理を、AppDelegateクラスの画面遷移させたい部分に記述します。
- AppDelegate.swift
のには、画面遷移させたいControllerがあるStoryboardの名称を入れます。
のには、先ほどStoryboardで設定した値を入れます。
2つ目の方法
遷移元となるControllerで画面遷移するメソッドを定義し、で呼び出す
また、画面遷移元とどちらの方法も呼び出し元となる画面は、どの画面でも現在表示している画面が現在定義したControllerでなくても問題ない。
そのため、どのControllerでメソッドを定義しても画面遷移の処理は、動作します。
こちらの方法では、で定義した現在画面を取得するメソッドをで実行し、取得した値を使いメソッドで画面遷移します。
- Controller.swift
以下の処理を、AppDelegateクラスの画面遷移させたい部分に記述します。
- AppDelegate.swift
2つの遷移方法の違いについて
1つ目の画面遷移方法のメリット
- 画面遷移する処理のコードが、AppDelegateクラスのみで完結する
1つ目の画面遷移方法のデメリット
- 画面遷移させるたびに、AppDelegateクラスにWindowを生成する処理を記述することになるため、何度も画面遷移する場合は、コードが肥大化する
2つ目の画面遷移方法のメリット
AppDelegate.swiftでの記述が短い
- AppDelegateでは、Controllerで定義したメソッドの呼び出しタイミングのみ明記することになる。
- メソッドを切り出しているため、柔軟に処理を変更可能
- AppDelegateクラスの肥大化を避けることができる。
まとめ
- 何度もAppDelegateクラスから画面遷移しない場合は、コードがAppDelegateクラスのみで完結する1つ目の方法でも問題ない
- 基本は、AppDelegateクラスの肥大化を避けることができ、1つ目の方法より柔軟な変更に強い、2つ目の方法を使うべき
極力、AppDelegateクラスの肥大化は処理の複雑化を避けるために、避けたいところです。
おわりに
AppDelegateクラスからの画面遷移処理にも様々な記述方法があり、それぞれ学びがありました!
参考サイト
小幡 十矛(Obata Tomu)|価値を共創するエンジニア
東京を拠点に、アプリ開発・新規事業立ち上げ・ブランドづくりに取り組んでいます。
2021年にサイバーエージェントへ新卒入社後、ABEMA Live や AmebaブログのiOSアプリ開発を担当。
現在はフリーランスとして、複数の新規プロダクトやリアル店舗の立ち上げに挑戦中です。
🎯 Mission|人の挑戦を加速する仕組みをつくる
── アイデアを形にし、前に進める“土台”や“場”を共創する
📌 「リアルな場 × デジタル」の可能性を探求し、新しい挑戦が生まれる土壌を育てる
🔹 エンジニアリング × ビジネスの視点から、アイデアを形にし、成長を支えていく
🔹 実店舗オーナーを目指し、オーダースーツ・ドライヘッドスパ・セレクトショップの複合店舗の立ち上げにも挑戦中
👥 特に、社会人1〜5年目くらいで
「やりたい気持ちはあるけど、最初の一歩に迷っている」方へ。
「自分の可能性をもっと広げたい」
「モヤっとしたアイデアがあるけど、どう進めていいかわからない」
そんなフェーズにいる方と、一緒に考えたり、手を動かしたりできたら嬉しいです。
🌱 「挑戦したい20代」との出会いも、大切にしています。
「ちょっと話してみたいな」くらいの気持ちで、気軽に声をかけてもらえたら嬉しいです!🙌
🌐 詳しいプロフィールはこちら
https://obata-tomu.jp/