通常,要在 SwiftUI NavigationView 中实现“自定义关闭按钮”,我会使用 @Environment(\.dismiss) private var Dismiss
,然后调用 dismiss()
code> 关闭 View 。
但是,假设我想从 NavigationView
的父级中消除 NavigationLink
?
struct SwiftUIView: View {
var body: some View {
HStack {
Button(action: {
// dismiss view
}) {
Text("Dismiss View")
} // assume this button is always visible
NavigationView {
Text("This is the NavigationView")
NavigationLink {
Text("This is the view I want to exit")
} label: {
Text("Go to view I want to exit")
}
}
}
}
}
如何通过单击父 View 中的关闭 View
按钮来关闭显示这是我要退出的 View
的 View ?
最佳答案
解决方案如下:
struct SwiftUIView: View {
@State var isPresent = true
@State var isDismissed: Bool = false
var body: some View {
HStack {
Button(action: {
isDismissed = true
}) {
Text("Dismiss View")
} // assume this button is always visible
NavigationView {
VStack {
Text("This is the NavigationView")
NavigationLink {
ViewToDismiss(dismissView: $isDismissed)
} label: {
Text("Go to view I want to exit")
}
}
}
}
}
}
struct ViewToDismiss: View {
@Environment(\.dismiss) private var dismiss
@Binding var dismissView: Bool
var body: some View {
Text("This is the view I want to exit")
.onChange(of: dismissView,
perform:
( { newValue in
dismiss()
}))
}
}
关于ios - 如何从父 View 中关闭 SwiftUI NavigationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73133137/