XCodeでSwiftUIの新規プロジェクトを作ったときに、最初はLife CycleとしてSwiftUI Appを選択したけど、後々AppDelegateに変更したいことがありました。
SwiftUI Appを選択してプロジェクトを作成すると、xxxApp.swiftというファイルが作成されてそれがエントリポイントとなります。
このファイルを削除してAppDelegate.swiftファイルを作成し、以下のようなAppDelegateクラスを実装すればいけるだろうと思ったのですが、シミュレーターでアプリを起動してみると画面が真っ黒になってしまいました。
import UIKit import SwiftUI @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = UIHostingController(rootView: ContentView()) window?.makeKeyAndVisible() return true } }
こちらの記事を参考にさせていただいたのですが、AppDelegateを使ってビューを表示できるようにするには、メインターゲットのInfo.plistからApplication Scene Manifestの項目を削除してあげる必要があるようです。
こうすることで、ContentViewのビューがシミュレーターの画面に表示されるようになりました。