はじめに
プロジェクト作成時にLife CycleをSwiftUI Appにすると生成される、「Appのプロトコルに準拠した構造体」で"environmentObject(_:)"を適用する方法のメモ。
開発環境
- macOS Big Sur 11.2.3
- Xcode 12.4
- Swift 5.3.2
本題
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のライフサイクルに慣れていないので、今後も都度調べていこうと思います。