我有一个表格视图,当用户点击下面父视图中的按钮时会呈现出来:
struct ViewWithSheet: View {
@State var showingSheetView: Bool = false
@EnvironmetObject var store: DataStore()
var body: some View {
NavigationView() {
ZStack {
Button(action: { self.showingSheetView = true }) {
Text("Show sheet view")
}
}
.navigationBarHidden(true)
.navigationBarTitle("")
.sheet(isPresented: $showingSheetView) {
SheetView(showingSheetView: self.$showingSheetView).environmentObject(self.dataStore)
}
}
}
}
在表视图中,当用户点击另一个按钮时,存储器将执行一个带有完成处理程序的操作。完成处理程序返回一个对象值,如果该值存在,则应该关闭SheetView。
struct SheetView: View {
@Binding var showingSheetView: Bool
@EnvironmentObject var store: DataStore()
//@Environment(\.presentationMode) private var presentationMode
func create() {
store.createObject() { object, error in
if let _ = object {
self.showingSheetView = false
// self.presentationMode.wrappedValue.dismiss()
}
}
}
var body: some View {
VStack {
VStack {
HStack {
Button(action: { self.showingSheetView = false }) {
Text("Cancel")
}
Spacer()
Spacer()
Button(action: { self.create() }) {
Text("Add")
}
}
.padding()
}
}
}
}
然而,在create()函数中,一旦store返回值并且showingSheetView设置为false,该表视图不会按预期解除显示。我尝试过使用presentationMode解除显示表视图,但这也似乎无效。