【发布时间】:2021-04-01 16:04:12
【问题描述】:
当从一个视图推送到另一个视图时,我想在 SwiftUI 中隐藏我的 TabView 的 TabBar,就像在消息以外的几乎所有聊天应用程序中一样。
我已经看到了几种使用第三方库的方法,但是我正在寻找一个本地解决方案。
我最接近的是嵌套在 NavigationView 中的 TabView。这似乎工作正常,并且可以设置 NavigationTitle 但是我还没有找到设置工具栏项的方法。
@State var navTitle: String = ""
NavigationView {
TabView {
ViewA()
.tabItem {
Label("TabA", systemImage: "some.image")
}
ViewB()
.tabItem {
Label("TabB", systemImage: "some.image")
}
ViewC()
.tabItem {
Label("TabC", systemImage: "some.image")
}
}
.navigationTitle($navTitle) // change nav title in tabbed views
}
如果我要使用这种方法来确保在 ViewA/B/C 中推送新视图时 tabBar 隐藏,我将如何将 toolBarItems 放置在 ViewA/B/C 的导航栏中的 navigationBarTrailing 中?
我需要这些 toolBarItems 中的按钮可以在 ViewA/B/C 中访问,否则我将在 TabBarView 中创建 viewModels 并传递我想要避免的。
如果只有一种方法可以在推送到另一个视图时隐藏 TabBar,我可以返回将 navigationView 嵌套在 TabView 中,这会使事情变得更容易。
【问题讨论】: