SwiftUI - 带有嵌套 NavigationViews 的 TabView 重置 Navigationflow

SwiftUI - TabView with nested NavigationViews resets Navigationflow

我有一个带有导航视图的 TabView。

struct ContentView: View {
    var body: some View {
        TabView {
            
            NavigationView {
                NavigationLink("Link to my first Navigation Level", destination: MyFirstView())
            }
            .tabItem {
                Image(systemName: "house")
                Text("Home")
                
            }.tag(0)
            
            NavigationView {
                Text("Second Nav Page")
            }
            .tabItem {
                Image(systemName: "gear")
                Text("Settings")
            }.tag(1)
            
        }
    }
}


struct MyFirstView: View {
    
    @State var selectedTag: String?
    
    var body: some View {
        VStack {
            Text("My First View")
            NavigationLink("(Working) Link to my second Navigation Level", destination: MySecondView())
            Text("But the Button in the Navigation Bar doesn't work")
        }
        .navigationBarTitle("My First View", displayMode: .inline)
        .navigationBarItems(
            leading: HStack {
                NavigationLink(destination: MySecondView(), tag: "xx", selection: $selectedTag ){
                    Button(action: {
                        print("Settings button pressed...")
                        self.selectedTag = "xx"
                    }) {
                        
                        Image(systemName: "gearshape.2.fill").imageScale(.large)
                    }
                }
            }
        )
    }
}

struct MySecondView: View {
    var body: some View {
        Text("My Second View")
    }
}

现在我有一个超级奇怪的行为。如果我单击“Link 到我的第一个导航级别”,然后单击“(工作)Link 到我的第二个导航级别”,旅程就会开始。如果我在第二个导航级别中单击“后退”,它将返回到第一个导航级别。

问题:

当我在第一个导航级别上单击导航栏中的齿轮符号时,它有点脱离嵌套导航并将其设置到顶层。结果是,当我单击“后退”时,它会将我从第二个导航级别带回到最根屏幕,但我的预期行为是它应该返回到第一个导航级别。

知道我做错了什么吗?我正在使用 Xcode 12.2 beta 3 和 iOS 14.2(不确定它是否是测试版错误)。

非常感谢!

这成功了(感谢@Asperi)。必须在 tabBarItems

之外
            NavigationLink(destination: AddDetailView(existingItem: nil), 
                isActive: $addMode) { EmptyView() }