首页 > 解决方案 > 无法超越带有嵌套导航链接的第二页

问题描述

我有一个NavigationView设置和七个要连续推送的视图。这些视图中的每一个都有一个导航链接。我tag为每个导航链接使用一个,并使用selection来自环境变量的绑定来告诉导航视图推送。我的目标是像这样推动这些观点:

A -> B -> C -> D -> E -> F -> G

但是,发生的情况是它像这样弹回根目录:

A -> B -> C(简要)-> A

我确信这是一个错误,但我也在最新的 Xcode 13 beta 中尝试过它,它仍然是一样的,所以也许这是我做错了。

这是我的第一个视图的代码:

struct EventCreationView: View {
    @EnvironmentObject var modelController: EventCreationModelController

    var body: some View {
        VStack {
            NavigationView {
                VStack {
                    EventSetupDetailView()
                        .navigationBarTitle("")
                        .navigationBarHidden(true)
                        .navigationBarBackButtonHidden(true)
                }
            }
            ContinueView()
        }
        .navigationViewStyle(StackNavigationViewStyle())
        .edgesIgnoringSafeArea([.bottom])
    }

这是我包含在 中的导航链接代码EventSetupDetailView,以及链接为目的地的所有其他视图:

NavigationLink(
    destination: TheNextView()
        .navigationBarTitle("")
        .navigationBarHidden(true)
        .navigationBarBackButtonHidden(true),
    tag: 1, // This is changed depending on what page it should show at
    selection: $modelController.currentPage,
    label: { EmptyView() }
)

在里面ContinueView我有一个按钮,modelController.currentPage当它被按下时增加它的值。

为什么这不起作用?我可以看到它modelController.currentPage没有被重置为零并且每次按下ContinueView按钮时都会正确递增,所以那里没有问题。推动导航控制器应该非常简单,但这占用了我两天的时间,我无法弄清楚。请帮忙!

更新:当我不使用选择/标签绑定时,只有以下代码用于导航链接,它可以工作:

NavigationLink(
    destination: TheNextView()
        .navigationBarTitle("")
        .navigationBarHidden(true)
        .navigationBarBackButtonHidden(true)
    ,
    label: { Text("Press me") }
)

标签: iosswiftswiftui

解决方案


推荐阅读