SwiftUI(1.0)中的导航问题

SwiftUI(1.0)中的导航问题,swiftui,Swiftui,首先,我有NavigationView和不工作刷回,如何在UIKit NavigationController,为什么? 第二,如何为我的情况正确创建导航流: 我有AuthView()、SelectedLanguageView()和OnboardingView()。 在第一次启动时,用户显示SelectedLanguageView()、下一个OnboardingView()和最后一个AuthView() 用户不能使用OnboardingView()返回SelectedLanguageView()

首先,我有NavigationView和不工作刷回,如何在UIKit NavigationController,为什么? 第二,如何为我的情况正确创建导航流: 我有AuthView()、SelectedLanguageView()和OnboardingView()。 在第一次启动时,用户显示SelectedLanguageView()、下一个OnboardingView()和最后一个AuthView() 用户不能使用OnboardingView()返回SelectedLanguageView(),使用AuthView()返回AuthView() 没有导航视图,导航链接就不能工作,为什么? 如果这不是第一次启动,且用户未授权,则显示AuthView(),否则如果用户授权,则显示MainView(), MainView()包含4个项目的选项卡栏,每个项目都有NavigationView

@State private var navBarHidden = true

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
                
        let languagSettings = UserLanguageSettings()
        UserDefaults.standard.set(false, forKey: "isNotFirstLaunchApp")
        
        if let windowScene = scene as? UIWindowScene {
            let window = UIWindow(windowScene: windowScene)
            if UserDefaults.standard.bool(forKey: "isNotFirstLaunchApp") == false {
                window.rootViewController = UIHostingController(rootView: OnboardingView(navBarHidden: $navBarHidden).environmentObject(languagSettings))
            } else {
                window.rootViewController = UIHostingController(rootView: AuthorizationView(navBarHidden: $navBarHidden.not, isAddNavView: true).environmentObject(languagSettings))
            }
            self.window = window
            window.makeKeyAndVisible()
        }
    }
用户已授权的条件尚未添加

var isAddNavView: Bool = false

var body: some View {
        if isAddNavBar {
            return NavigationView {
                ZStack {
                    VStack {
                        Text("")
                    }
                }
            }
        } else {
            return ZStack {
                VStack {
                    Text("")
                }
            }
        }
    }
我有一个错误,如果返回NavigationView,如果删除NavigationView并返回ZStack,那么一切正常。我认为有更好的解决办法。 想法

我使用的项目中的所有导航链接如下

接下来-我尝试了以下方法: 在所有项目中,我删除所有NavigationView并创建模式显示屏幕(.sheet) 在AuthorizationView()中,我有@State变量 例如,在AuthorizationView()上

显示流程注册的点击按钮注册包括4个屏幕,以.sheet显示

RegistrationView(registrationView: $isShowRegistration)
//screens below include @Binding var registrationView: Bool
VerificationView(registrationView: $registrationView)
SetupPasswordView(registrationView: $registrationView)
EndRegistrationViewAndAuthorization(registrationView: $registrationView)
在EndRegistrationView和Authorization上,我有一个按钮,在理想状态下,我需要关闭所有以前的屏幕并调用func Auth(),这将使用选项卡栏打开应用程序的主屏幕,其中每个项目都包括NavigationView。现在,我的按钮操作{self.registrationView.toogle()}返回我的registrationView(),但应该返回到AuthorizationView()

我有一个错误,如果返回NavigationView,如果删除NavigationView并返回ZStack,那么一切正常。我认为有更好的解决办法。想法

对于SwiftUI 1.0,以下内容应该可以使用

var body: some View {
     Group {
        if isAddNavBar {
            NavigationView {
                ZStack {
                    VStack {
                        Text("")
                    }
                }
            }
        } else {
            ZStack {
                VStack {
                    Text("")
                }
            }
        }
    }
}
我有一个错误,如果返回NavigationView,如果删除NavigationView并返回ZStack,那么一切正常。我认为有更好的解决办法。想法

对于SwiftUI 1.0,以下内容应该可以使用

var body: some View {
     Group {
        if isAddNavBar {
            NavigationView {
                ZStack {
                    VStack {
                        Text("")
                    }
                }
            }
        } else {
            ZStack {
                VStack {
                    Text("")
                }
            }
        }
    }
}

是的,谢谢你!问题的一小部分已经解决:]是的,谢谢!问题的一小部分已经解决:]
var body: some View {
     Group {
        if isAddNavBar {
            NavigationView {
                ZStack {
                    VStack {
                        Text("")
                    }
                }
            }
        } else {
            ZStack {
                VStack {
                    Text("")
                }
            }
        }
    }
}