我试图找到一种方法,让 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")
}
}
当您导航到
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()
}
}
}
}
}