我有一个 MainView,它是一个 Navigation View,它通过 NavigationLink 呈现一个 View,即这里的 SubView。在子视图中,我想在按钮切换的子视图顶部显示一个视图,同时隐藏导航栏和子视图内容。我尝试使用 ZStack,但它似乎并没有隐藏导航栏,因为它仍然是导航堆栈的一部分。有没有其他方法可以实现这一目标?
代码如下所示:
struct MainView: View {
var body: some View {
NavigationView {
List {
NavigationLink(destination: SubView()) {
Text("Go to Another View")
}
}
}
}
}
struct SubView : View {
@State private var showTopSheet: Bool = false
var body: some View {
ZStack {
Text("Content goes here")
if showTopSheet {
TopSheet(showTopSheet: $showTopSheet).transition(.move(edge: .top))
}
}.navigationBarTitle("SubView")
.navigationBarBackButtonHidden(true)
.navigationBarItems(trailing: Button(action: {
self.showTopSheet.toggle()
}) {
Image(systemName: "folder.circle")
})
}
}
struct TopSheet: View {
@Binding var showTopSheet: Bool
var body: some View {
GeometryReader { geo in
VStack {
ZStack {
Rectangle().fill(Color.orange)
.frame(height: geo.size.height * 364 / 744)
HStack {
Text("View")
Button(action: {
self.showTopSheet.toggle()
}) {
Image("Icon Close").renderingMode(.original)
}
}
}
Spacer()
}.edgesIgnoringSafeArea([.top, .bottom])
.background(Color(UIColor(red:0.1, green:0.1, blue:0.12, alpha:0.9)))
}
}
}
提前致谢 :)