【问题标题】:SwiftUI - TabView with nested NavigationViews resets NavigationflowSwiftUI - 带有嵌套 NavigationViews 的 TabView 重置 Navigationflow
【发布时间】:2020-12-01 18:27:31
【问题描述】:

我有一个带有导航视图的 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")
    }
}

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

问题:

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

任何想法我做错了什么?我正在使用 Xcode 12.2 beta 3 和 iOS 14.2(不确定它是否是 beta 错误)。

非常感谢!

【问题讨论】:

标签: swiftui navigationview tabview swiftui-navigationlink


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-07-06
    • 2022-11-21
    • 2022-11-07
    • 1970-01-01
    • 2013-12-03
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多