BambooHero

iOSアプリ開発と株式投資をメインに色々書きます

SwiftUIプロジェクトを作った後にAppDelegate起動に変更したい

f:id:bamboohero:20210520092909p:plain XCodeでSwiftUIの新規プロジェクトを作ったときに、最初はLife CycleとしてSwiftUI Appを選択したけど、後々AppDelegateに変更したいことがありました。

f:id:bamboohero:20210410002631p:plain:w500

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の項目を削除してあげる必要があるようです。

qiita.com

f:id:bamboohero:20210410003857p:plain:w500

こうすることで、ContentViewのビューがシミュレーターの画面に表示されるようになりました。