swiftui - 嵌入在 NavigationView 中的视图(后者隐藏了 navBar)每次推送到视图时都会出现故障 [SwiftUI]
问题描述
在过去的一个小时里,我一直在为此苦苦挣扎,主要是因为我看到的所有解决方案似乎都比真正的解决方案更老套,这让我质疑 SwiftUI 中 NavigationBar 的生产准备情况。
我有一个 MainView 和一个 PushView,我需要在两个视图上隐藏导航栏。但是,这会产生以下问题:
1)当PushView被推到MainView上时,出现nav bar出现然后消失的故障。
2) 现在无法返回 MainView,因为 PushView 中的后退按钮现在也被隐藏了。
我想要的是我自己在 PushView 中的按钮,它会弹出这个 View 并返回 HomeView
我究竟做错了什么:
struct HomeView: View {
var body: some View {
NavigationView {
NavigationLink(destination: PushView()) {
Text("PRESSME")
}.navigationBarTitle("")
.navigationBarHidden(true)
}
}
}
struct PushView: View {
var body: some View {
Text("Hello View Two")
}
}
解决方案
是的,正如您已经亲身体验过的那样,NavBar 有点错误。
在我看来不是 hacky 的干净解决方案如下所示:
struct HomeView: View {
var body: some View {
NavigationView {
NavigationLink(destination: PushView()) {
Text("PRESSME")
}.navigationBarTitle("")
.navigationBarHidden(true)
}
}
}
struct PushView: View {
@Environment(\.presentationMode) var presentationMode
var btnBack : some View {
Button(action: {
self.presentationMode.wrappedValue.dismiss()
}) {
Image(systemName: "chevron.left")
}
}
var body: some View {
VStack {
HStack {
btnBack // Your custom back button.
.padding()
Spacer()
}
Spacer()
Text("Hello View Two")
Spacer()
}
.navigationBarTitle("")
.navigationBarHidden(true) // This hides the NavBar on PushView.
}
}
推荐阅读
- c# - OpenXML 从模板中删除文本
- webtask - 如何在 webtask 中使用会话?
- mips - 为什么给出L或H后,上下界没有正确重置,所以计算机猜测关闭。MIPS 代码
- javascript - 如何通过 PHP 在 .JS 文件中插入来自 MySQL DB 的值?
- ssl-certificate - 即使我有域设置,Digital Ocean Let's Encrypt 域列表也是空的
- tfs - 防止改变迭代路径
- dart - 使用 ngFor 时,如何使部分 Angular Dart HTML 页面“旋转/过渡”?
- c# - 为什么在 WCF 应用程序的 Web.config 文件中添加 httpRuntime targetFramework 可以解决与 TLS 相关的连接问题?
- python - bash:除以零错误,除以仅显示整数答案
- wordpress - 如何查看禁用的 wordpress 页面内容