如何在没有按钮的情况下通过编程方式显示SwiftUI视图

4
我现在有一个问题: 我的需求是在应用程序首次启动时呈现已经存在的视图。 我已经在AppDelegate中实现了一些内容,检查是否第一次启动应用程序。如果是这种情况,应该呈现另一个视图。 是否有一种方法可以像Storyboards一样直接在AppDelegate中完成这个操作? 提前感谢你的回答。
2个回答

1
我会创建一个初始的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

1
在您的AppDelegate中,有一个托管控制器,用于引导主SwiftUI视图。因此,实现这一目标的一种方法是有条件地设置rootView。
UIHostingController(rootView: isFirstTime ? FirstTimeView() : ContentView())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接