我现在有一个问题:
我的需求是在应用程序首次启动时呈现已经存在的视图。
我已经在AppDelegate中实现了一些内容,检查是否第一次启动应用程序。如果是这种情况,应该呈现另一个视图。
是否有一种方法可以像Storyboards一样直接在AppDelegate中完成这个操作?
提前感谢你的回答。
RootView
,它仅在内容之间进行切换并提供传递给它的EnvironmentValues
。struct RootView: View {
@Environment(\.isInitialLaunch) var isInitialLaunch: Bool
var body: some View {
Group {
if isInitialLaunch {
FirstTimeView()
} else {
ContentView()
}
}
}
SceneDelegate
中:self.window?.rootViewController = UIHostingController(rootView: RootView().environment(\.isInitialLaunch, isInitialLaunch))
isInitialLaunch
变成一个@State
(或@Binding
、@ObservedObject
等)变量。这样,在你的引导流程完成后,如果你将其更改为false
,SwiftUI实际上会自动将用户动画到ContentView
。UIHostingController(rootView: isFirstTime ? FirstTimeView() : ContentView())