如何启动没有导航回溯功能的SwiftUI视图?

时间:2019-06-15 18:37:28

标签: swiftui

我想将View作为独立的View启动,而没有导航层次结构。我不想使用NavigationButton的原因是我不想让用户返回到调用表单。

我尝试了以下方法,该方法类似于在ScenceDelegate中启动第一个视图的方式,但是没有任何反应:

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let window = appDelegate.getNewWindow()
    window.rootViewController = UIHostingController(rootView: NewView())
    window.makeKeyAndVisible()

我有合理的理由不使用导航UI,为使简短起见,我省略了解释。我避免使用情节提要来使其尽可能简单。

感谢您提出任何解决方案建议。

1 个答案:

答案 0 :(得分:1)

这就是我完成加载新的根视图的方式。

我在AppDelegate代码中添加了以下内容

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
     var window: UIWindow?

   ...

    func loadNewRootSwiftUIView(rootViewController: UIViewController)
    {
        let window = UIWindow(frame: UIScreen.main.bounds)
        window.rootViewController = rootViewController
        self.window = window
        window.makeKeyAndVisible()
    }
}

并在我的表单中放置以下内容:

struct LaunchView : View {
    var body: some View {
        VStack {
            Button(
                action: {
                   LaunchLoginView()
            },
                label: {
                    Text("Login")
            }
            )
        }
    }
}

func LaunchLoginView(){
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let vContoller = UIHostingController(rootView: LoginView())
    appDelegate.loadNewRootSwiftUIView(rootViewController: vContoller)
}