如何在视图 SwiftUI 中隐藏 TabBar

问题描述 投票:0回答:1

我试图找到一种方法,让 tabBar 在 SecondView() 出现时隐藏起来。到目前为止,我所见过的所有尝试过的解决方案都没有奏效(或者我实施不当)。有没有一种直接的方法来实现这个?

代码:

struct MainView: View {
    var body: some View {
        TabView {
            FirstView()
                .tabItem {
                    Image(systemName: "house.fill")
                }
        }
    }
}

struct FirstView: View {
    var body: some View {
        NavigationView {
            NavigationLink(
                destination: SecondView(),
                label: {
                    Text("Second")
                }
            )
        }
    }
}

struct SecondView: View {
    var body: some View {
        Text("Second")
    }
}
swiftui tabbar
1个回答
0
投票

当您导航到

SecondView
时选项卡持续存在的原因可能是因为您的
TabView
包含
NavigationView
,所以实际上它的行为符合我的预期。如果您希望选项卡在
NavigationView
内导航时消失,那么您必须更改层次结构。

由于

NavigationView
在 iOS 16 中已被弃用,您可能也想将其更改为
NavigationStack
。以下是一个例子,展示了导航到
TabView
时如何将
SecondView
留在后面,希望对您有所帮助

import SwiftUI

enum NavDestination {
    case first
    case second
}

struct FirstView: View {
    var body: some View {
        NavigationLink("Go to SecondView", value: NavDestination.second)
    }
}

struct SecondView: View {
    var body: some View {
        Text("SecondView")
    }
}

struct MainView: View {
    var body: some View {
        NavigationStack {
            TabView {
                FirstView()
                    .tabItem {
                        Image(systemName: "house.fill")
                    }
            }
            .navigationDestination(for: NavDestination.self) { destination in
                switch destination {
                case .first: FirstView()
                case .second: SecondView()
                }
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.