在 NavigationView 中点击 TabView 中的标签栏不会关闭嵌套的 NavigationView

Tapping on tabbar in TabView while inside a NavigationView won't dismiss nested NavigationViews

我有一个非常基本的设置,其中涉及 TabView 中的 NavigationViews。在那个 NavigationView 中,用户可以转到其他屏幕。

我希望,就像在我见过的其他每个应用程序中一样,当我点击当前活动选项卡时,它会跳回到初始 NavigationView,忽略所有其他 NavigationViews在该选项卡中处于活动状态。但是,当我按下活动标签时,没有任何反应。

是否有 属性 我必须设置才能使这项工作正常进行?

您所描述的不是标准的 SwiftUI 行为,更糟糕的是,您无法检测到 TabBar 图标上的第二次点击。我知道的唯一方法是使用自定义 TabBar 设置,例如像这样:

struct ContentView: View {
    
    @State private var currentTab = "Analytics"
    
    var body: some View {
        VStack {
            TabView(selection: $currentTab) {
                VStack {
                    Text("Home Tab")
                }
                .tag("Home")
                
                VStack {
                    Text("Analytics Tab")
                }
                .tag("Analytics")
            }
            Divider()
            HStack {
                TabBarButton(imageName: "house.fill", label: "Home", current: $currentTab)
                TabBarButton(imageName: "chart.bar.fill", label: "Analytics", current: $currentTab)
            }
        }
    }
}

struct TabBarButton: View {
    let imageName: String
    let label: String
    @Binding var current: String
    
    var body: some View {
        Button {
            if current == label {
                // reset your view
                print("reset")
            }
            current = label
        } label: {
            VStack {
                Image(systemName: imageName)
                Text(label)
            }
        }
        .padding()
    }
}