【Swift UIKit】SceneDelegate.swiftとは?役割と使い方まとめ

この記事からわかること
- SwiftのUIKitのSceneDelegate.swiftとは?
- 役割や使い方
- sceneメソッドの使用方法
index
[open]
\ アプリをリリースしました /
SceneDelegate.swiftとは?
「SceneDelegate.swift」ファイルはUIKitフレームワークで新規プロジェクトを作成した際にiOS13/Xcode11から自動で作られるようになったファイルの1つです。
作成されるファイル群
似たようなファイルにAppDelegate.swiftがありますが、このファイルで担っていたライフサイクルに関する機能がSceneDelegate.swiftでも実装できるようになっています。
役割
SceneDelegate.swiftの役割は複数のUIインスタンスを作成とライフサイクルの管理ができることです。これによりiPadに備わっているSplit Viewなどの機能では同じアプリを別画面として表示させることができるようになっています。
ライフサイクルに関してはAppDelegate.swiftからも管理しているアプリ起動時などに実行できる処理などが提供されています。
まとめ
- iOS13/Xcode11から自動生成されるファイル
- 複数のUIインスタンスを生成できる
- アプリのライフサイクルを管理
- AppDelegate.swiftと似たような役割を持つ
概要
生成されたファイルの中身は以下のようにUIWindowSceneDelegate
プロトコルに準拠したクラスになっています。あらかじめライフサイクルイベント発生時に呼び出されるメソッドが複数用意されています。
scene(_:willConnectTo:options:)
アプリが起動した時に呼ばれるメソッド。UIWindowのインスタンスの生成と最初に接続するView Controllerを設定しています。プロジェクト生成時はStoryboardと紐付いているので自動でインスタンス化とView Controllerの設定 が行われています。
sceneDidDisconnect(_:)
アプリが削除されたときに呼ばれるメソッド。
sceneDidBecomeActive(_:)
アプリが非アクティブ状態からアクティブ状態になったときに呼ばれるメソッド。
sceneWillResignActive(_:)
アプリがアクティブ状態から非アクティブ状態になったときに呼ばれるメソッド。
sceneWillEnterForeground(_:)
アプリがバックグラウンドからフォアグラウンドに送られたときに呼ばれるメソッド。
sceneDidEnterBackground(_:)
アプリがフォアグラウンドからバックグラウンドに送られたときに呼ばれるメソッド。
使用例
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。