如何解决如何在 SwiftUI 中隐藏 TabBar 并保留工具栏项?
当从一个视图推送到另一个视图时,我想在 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,我将如何在 ViewA/B/C 的导航栏中的 navigationBarTrailing 中放置 toolBarItems?>
我需要这些 toolBarItems 中的按钮可以在 ViewA/B/C 中访问,否则我会在 TabBarView 中创建 viewModels 并传递我想要避免的。
如果在推送到另一个视图时只有一种隐藏 TabBar 的方法,我可以回到将导航视图嵌套在 TabView 中,这会让事情变得更容易。
解决方法
我所做的是一个非常hacky的解决方案,但在他们有办法隐藏TabBar之前它似乎有效:
NavigationView {
TabView {
ViewA()
.tabItem {
Label("TabA",systemImage: "some.image")
}
ViewB()
.tabItem {
Label("TabB",systemImage: "some.image")
}
ViewC()
.tabItem {
Label("TabC",systemImage: "some.image")
}
}
.navigationBarHidden(true)
}
然后在你的每个视图中你可以添加一个 NavigationView。虽然显然不是理想的方法,但似乎效果很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。