web-dev-qa-db-ja.com

UIKITライフサイクルからIOS 14のSwiftui Lifeサイクルへの変換方法(Xcode 12 Beta)

私は現在SceneDelegateAppDelegateを使用しているSwiftuiアプリに取り組んでいます。 UIKit structとSwiftUIなどがある場合は、ライフサイクルをAppからscenesに変換できる方法を知りたいです。

また、CoreDataとPersistentContainersに対応する方法を知り、これらを私たちの環境に注入したいと思います。

また、UIApplicationDelegateAdapterAppDelegateを挿入しましたが、@mainは私にエラーを与えています

'main()'はiOS 14.0以降でのみ利用可能です

私は初めに@available (iOS 14.0, *)を使っています:

import SwiftUI

@available(iOS 14.0, *)
@main

struct MyApp: App {

    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

このようなことをすることで、SceneDelegateコードはどこに移動します。私はまだこの変換がどのように進んでいるかをかなり混乱しています。私はAppleが彼らのセッションや何かでこれについて話しているのを見たことがありません。助けが本当に感謝されます。

8
Osama Naeem

scenedelegateコードはどこにありますか。

@available(iOS 14.0, *)
@main
struct MyApp: App {

    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    @Environment(\.scenePhase) private var scenePhase

    var body: some Scene {
        WindowGroup {         // << this is a scene
          ContentView()
            .onChange(of: scenePhase) { phase in
              switch phase {
                case .active:
                    print(">> your code is here on scene become active")
                case .inactive:
                    print(">> your code is here on become inactive")
                case .background:
                    print(">> your code is here on go in background")
                default:
                    print(">> do something else in future")
             }
          }
        }
    }
}
 _
2
Asperi