SwiftUI 中想要不跳转从主View弹出一个View,以前在swift中,可以直接选择一按钮拖线到新的View
struct sheetView: View {
@State var open = false
var body: some View {
VStack{
Button(action: {
self.open = true
}) {
Text("展开")
}
}.sheet(isPresented: $open) {
OpenView()
}
}
}
struct OpenView: View {
var body: some View {
VStack{
Text("弹出的View")
}
}
}
在你想弹出的View下方.sheet()后选择isPresented,然后绑定一个@state变量,当这个变量值变化时,刷新View,所以在button中点击后触发方法,改变了值,所以刷新视图弹出。你可以选择下拉关闭这个View,但是有时需要用户点击一个按钮后,自动关闭,就需要实现下面方法
struct OpenView: View {
@Environment(\.presentationMode) var persentationMode
var body: some View {
VStack{
Text("弹出的View")
Button(action: {
self.persentationMode.wrappedValue.dismiss()
}) {
Text("关闭")
}
}
}
}
在ios13中弹出的View无法全屏。