每次将视图推送到视图 [SwiftUI] 时,嵌入在 NavigationView 中的视图(后者隐藏了 navBar)都会出现故障
View embedded in a NavigationView (where latter has navBar hidden) glitches every time it is pushed on to the View [SwiftUI]
在过去的一个小时里,我一直在为这个问题苦苦挣扎,主要是因为我看到的所有解决方案似乎比真正的解决方案更 hack-y,这让我质疑 SwiftUI 中 NavigationBar 的生产准备情况。
我有一个 MainView 和一个 PushView,我需要在两个视图上隐藏导航栏。
但是,这会产生以下问题:
1)当PushView被推到MainView上时,导航栏出现然后消失的地方出现故障。
2)现在无法返回 MainView,因为 PushView 中的后退按钮现在也被隐藏了。
我想要的是在 PushView 中我自己的按钮弹出这个视图并返回到 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")
}
}
是的,导航栏有点问题,您已经体验过。
在我看来,一个干净的解决方案看起来像这样:
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.
}
}
在过去的一个小时里,我一直在为这个问题苦苦挣扎,主要是因为我看到的所有解决方案似乎比真正的解决方案更 hack-y,这让我质疑 SwiftUI 中 NavigationBar 的生产准备情况。
我有一个 MainView 和一个 PushView,我需要在两个视图上隐藏导航栏。 但是,这会产生以下问题:
1)当PushView被推到MainView上时,导航栏出现然后消失的地方出现故障。
2)现在无法返回 MainView,因为 PushView 中的后退按钮现在也被隐藏了。
我想要的是在 PushView 中我自己的按钮弹出这个视图并返回到 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")
}
}
是的,导航栏有点问题,您已经体验过。
在我看来,一个干净的解决方案看起来像这样:
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.
}
}