如何在没有导航回溯的情况下启动SwiftUI视图?

如何在没有导航回溯的情况下启动SwiftUI视图?,swiftui,Swiftui,我想将视图作为独立视图启动,而不使用导航层次结构。我不想使用NavigationButton的原因是我不想让用户返回调用表单 我尝试了以下类似于在SceneDeleteGate中启动第一个视图的方法,但什么也没有发生: let appDelegate = UIApplication.shared.delegate as! AppDelegate let window = appDelegate.getNewWindow() window.rootViewControlle

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

我尝试了以下类似于在SceneDeleteGate中启动第一个视图的方法,但什么也没有发生:

    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let window = appDelegate.getNewWindow()
    window.rootViewController = UIHostingController(rootView: NewView())
    window.makeKeyAndVisible()
我有一个合理的理由不使用导航用户界面,为了简短起见,我不做解释。我避免使用故事板,以尽可能保持简单


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

这就是我如何完成加载新根视图的过程

我在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)
}

这是用于登录屏幕的吗?如果你只是因为不想让用户返回而不想进入导航路线,你可以禁用导航栏的“返回”按钮,甚至完全隐藏导航栏。@Fogmeister是的,这是用于登录屏幕的。我刚刚发现这是在模拟器中工作的,但不是在画布中,这非常有意义!我将把这个问题留待一会儿,看看是否有人有更好的办法。那样的话。。。你不应该这样过渡。你真的应该把整个屏幕换成一个新的。使用类似于
userLoggedIn
的环境对象,并根据该状态更新视图以显示登录屏幕或应用程序屏幕。在此处查看我的答案。。。我已经用SwiftUI Beta 5试用过了。它会编译,但不会发生任何事情,即没有新窗口。这种方法在Beta 5中仍然有效吗?我是否需要以某种方式将其连接到SceneDelegate中?我使用的是SwiftUI Beta 7,并且存在相同的问题。什么也没发生。有人知道如何处理这种情况吗?那真的是在利用迅捷的过渡状态;应用程序代理和RootViewController最终将被完全删除。而且,正如我所知,苹果并没有真正考虑在SwiftUI中进行全视图替换式导航(la,替换根视图控制器)。那太糟糕了!有条件地显示欢迎屏幕和登录屏幕或直接进入主主屏幕不需要“单页应用”思维,正如Fogmeister所建议的那样(这是目前唯一的解决办法):(