0

我们知道 Apple 已经大大简化了 SwiftUI 应用程序生命周期 (WWDC20)。我看过 Paul Hudson 先生关于 SwiftUI 新变化的视频,其中他解释了如何在“@main or :App”结构中访问 AppDelegate 方法。

我想知道是否有任何方法可以访问 SceneDelegate 方法?

提前致谢。:)

4

2 回答 2

1

SceneDelegateSwiftUI 2.0 生命周期中暂时无法访问。您可以将一些回调.onChange用于[.active, .inactive, .background]状态,例如此处所示

或者......继续使用UIKit生命周期没有错

演示

于 2020-07-02T13:10:41.373 回答
1

这是在 AppDelegate 中访问生命周期的示例。

struct PodcastScene: Scene {
    @Environment(\.scenePhase) private var phase

    var body: some Scene {
        WindowGroup {
            TabView {
                LibraryView()
                DiscoverView()
                SearchView()
            }
        }
        .onChange(of: phase) { newPhase in
            switch newPhase {
            case .active:
                // App became active
            case .inactive:
                // App became inactive
            case .background:
                // App is running in the background
            @unknown default:
                // Fallback for future cases
            }
        }
    }
}

如果您添加像 Firebase 这样的框架配置,您可以覆盖 init 并在此处输入您的代码。

struct PodcastScene: Scene {

    init() {
        FirebaseApp.configure()
    }

    var body: some Scene {
        WindowGroup {
            TabView {
                LibraryView()
                DiscoverView()
                SearchView()
            }
        }
    }
}
于 2020-07-03T13:16:42.353 回答