Swift・iOS

Swiftを中心に学んだことを記録に残すブログです。技術に関係ない記事もたまに書いています。

【SwiftUI】Appのプロトコルに準拠した構造体で"environmentObject(_:)"を適用する

 

はじめに

プロジェクト作成時にLife CycleをSwiftUI Appにすると生成される、「Appのプロトコルに準拠した構造体」で"environmentObject(_:)"を適用する方法のメモ。

 

開発環境

 

本題

SampleApp.swift

import SwiftUI

@main
struct SampleApp: App {
    var body: some Scene {
        WindowGroup {
            RootView()
                .environmentObject(RootViewModel())
        }
    }
}

 

※UIKit App Delegateのプロジェクトで"environmentObject(_:)"を適用する場合

SceneDelegate.swift

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    let rootView = RootView()
        .environmentObject(RootViewModel())

    if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = UIHostingController(rootView: rootView)
        self.window = window
        window.makeKeyAndVisible()
    }
}

 

おわりに

SwiftUI Appのライフサイクルに慣れていないので、今後も都度調べていこうと思います。

 

参考