如何在 SwiftUI 的标签栏的特定视图中隐藏导航栏?
Posted
技术标签:
【中文标题】如何在 SwiftUI 的标签栏的特定视图中隐藏导航栏?【英文标题】:How do I hide navigation bar in the tab bar's specific view in SwiftUI? 【发布时间】:2019-07-14 10:45:49 【问题描述】:XCode11 beta3, MacOS Catalina 10.15 Beta(19A501i)
我想在push时隐藏tabBar~任何命令都会很有帮助,谢谢~
Click me to show gif image :
struct ContentView : View
var body: some View
WhenNavigationViewIsRootView()
struct WhenNavigationViewIsRootView : View
var body: some View
NavigationView
TabbedView
Rectangle().foregroundColor(.green)
.tag(0).tabItemText("Page1")
VStack
List
ForEach(0...2) i in
NavigationLink(
destination: Text("\(i)"),
label: Text("\(i)"))
.tag(1).tabItemText("Page2")
.navigationBarHidden(true)
【问题讨论】:
我已经删除了我的答案——它真的应该是一个评论,因为我没有为你的问题提供解决方案。我对您问题中的错误也略有误解。问题出在你的 gif 中。 gif 1 中的画布不是 gif 1 中显示的代码的正确画布,gif 2 中的画布不是 gif 2 中显示的代码的正确画布。应该交换画布。这就是为什么你为正在发生的事情提供的描述在我看来是倒退的——因为画布是倒退的。我建议您编辑您的问题,以便其他人可以提供帮助。 无论如何还是谢谢~因为你之前的评论是帮助我澄清问题。 我自己也想知道这个问题的答案,因为我遇到了完全相同的问题 @Rob 我已经更新了我的答案。让我知道这是否能解决您的问题或您还有其他问题。 【参考方案1】:如果要隐藏TabbedView
中的导航栏,则必须在嵌套在TabbedView
中的视图上设置.navigationBarHidden(true)
。然而,这还不够。无论出于何种原因,SwiftUI 都要求您先设置导航栏标题,然后才能隐藏导航栏。
NavigationView
TabbedView
Rectangle()
.foregroundColor(.green)
.tag(0)
.tabItem
Text("Page1")
.navigationBarTitle("")
.navigationBarHidden(true)
List(0...2) i in
NavigationLink(destination: Text("\(i)"))
Text("\(i)")
.tag(1)
.tabItem
Text("Page2")
.navigationBarTitle("")
.navigationBarHidden(true)
【讨论】:
感谢您的快速回复和提醒,我已经修正了我的描述,并根据您的建议更改问题。 在 SwiftUI developer.apple.com/documentation/uikit/uiviewcontroller/… 中似乎需要一些属性,例如“hidesBottomBarWhenPushed”@ 感谢您的详细解释和代码示例:) 问题是“如何隐藏标签栏?”但这显示了如何隐藏导航栏,这不是问题的答案。 @GeneZ.Ragan 你是对的。最初的问题令人困惑,很难准确地理解原始发帖人在寻找什么。我的答案似乎正确回答了我发布时他们提出的问题,但他们继续编辑问题,因此它实际上不再回答问题了。由于他们将其标记为已接受的答案,因此我从未真正确定是否应该将其删除。真正的答案是,据我所知,没有办法隐藏标签栏。以上是关于如何在 SwiftUI 的标签栏的特定视图中隐藏导航栏?的主要内容,如果未能解决你的问题,请参考以下文章