swiftui - 如何在 SwiftUI 的子视图中隐藏 TabView 叠加层?
问题描述
我有一个带有自定义 TabBar 和覆盖的 TabView:https ://jboullianne.medium.com/custom-tabbar-e8f2ea89d2fc
我能够使用 Introspect 在子视图中隐藏 TabBar:https ://github.com/siteline/SwiftUI-Introspect
但我也想隐藏子视图中的覆盖以完全隐藏 TabBar。
我该如何隐藏它?
我的测试代码试图隐藏 TabBar(工作,请参阅 TestTabBarPage3)和覆盖(如何???):
测试标签栏
struct TestTabBar: View {
var body: some View {
TabView {
TestTabBarPage1()
.tabItem {
Image(systemName: "envelope")
Text("TestTabBarPage1")
}
TestTabBarPage2()
.tabItem {
Image(systemName: "star")
Text("TestTabBarPage2")
}
}
.overlay(
Color(#colorLiteral(red: 0.259467423, green: 0.5342320204, blue: 0.7349982858, alpha: 1))
.frame(height: 50)
.offset(y: 40)
)
}
}
TestTabBarPage1
struct TestTabBarPage1: View {
var body: some View {
Text("TestTabBarPage1")
.navigationBarTitle(Text("TestTabBarPage2"), displayMode:.inline)
}
}
TestTabBarPage2
struct TestTabBarPage2: View {
var body: some View {
NavigationView {
NavigationLink(destination: TestTabBarPage3()) {
Text("TestTabBarPage3")
}
.navigationBarTitle(Text("TestTabBarPage2"), displayMode:.inline)
}
}
}
TestTabBarPage3
struct TestTabBarPage3: View {
@State var uiTabarController: UITabBarController?
var body: some View {
Text("Hello, World!")
.navigationBarTitle(Text("TestTabBarPage3"), displayMode:.inline)
.introspectTabBarController { (UITabBarController) in
UITabBarController.tabBar.isHidden = true
uiTabarController = UITabBarController
}.onDisappear{
uiTabarController?.tabBar.isHidden = false
}
}
}
解决方案
推荐阅读
- stored-procedures - DB2 存储过程无法将数据分配给变量
- cmd - 如何安装 Solidity 编译器和混音?
- java - 使用 while 循环将日期添加到日期
- c# - Linq 中的三元问题
- c++ - 如何在没有 OOM 杀手的情况下发出 C++ 终止捕获
- c# - C# 需要帮助理解奇怪的 Lambda 构造
- scala - 在 emr 5.29.0 上运行 scala 2.12
- python-3.x - 从 NiFi 中的 Python ExecuteScript 返回多个文件
- reactjs - Parcel/React App 在本地主机上工作,但在服务器上不工作
- mongodb - Kubernetes 与 Rails 中的 Mongo 连接问题