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

时间:2019-12-09 17:24:48

标签: ios view swiftui

我现在有一个问题: 我想要的是:第一次启动应用程序时,应该显示我已经存在的视图。我已经在AppDelegate中实现了一些检查应用程序是否首次启动的功能。如果是这样的话,应该提出另一种观点。有没有一种方法可以像在Storyboard中一样直接在AppDelegate中执行此操作?

谢谢。

2 个答案:

答案 0 :(得分:1)

在AppDelegate中,您有一个托管控制器,用于引导主SwiftUI视图。因此,实现此目标的一种方法是有条件地设置rootView

UIHostingController(rootView: isFirstTime ? FirstTimeView() : ContentView())

答案 1 :(得分: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的动画。