我正在尝试启用editMode,即来自这里:
到这里 :
使用以下代码:
struct DetailSheet: View {
@State private var items: [Item] = (0..<5).map { Item(title: "Item #\($0)") }
var body: some View {
NavigationView { // this line to be deleted for using navigationLink
List {
ForEach(items) { item in
Text(item.title)
}
.onMove { (from, to) in
print("just a dummy")
}
} // List
.navigationBarTitle("List")
.navigationBarItems(leading: EditButton())
} // this line to be deleted for using navigationLink
}
}
如果它是从场景委托调用的第一个视图,这很好。如果我从不同的“第一”视图请求它
.sheet(isPresented: $showDetailSheet, content: {DetailSheet()})
或者
.fullScreenCover(isPresented: $showDetailSheet, content: {DetailSheet()})
它不起作用了。如果我使用 NavigationLink 请求视图(如果我删除 NavigationView{ 和 } 的两行,它会再次起作用。
难道我做错了什么?如果没有,谁能解释一下,如果.sheet 请求了视图,为什么editMode 不起作用?
提前致谢!
编辑:这是我调用 DetailView 的视图代码(从 SceneDelegate 调用)
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@State var showDetailSheet : Bool = false
var body: some View {
NavigationView{
List {
NavigationLink(destination: DetailSheet(), label:{ Text("naviDetailSheet")})
Button(action: {showDetailSheet = true}){Text("DetailSheet")}
} // List
.navigationBarItems(trailing: EditButton())
} // Navi
.sheet(isPresented: $showDetailSheet, content: {DetailSheet()})
// .fullScreenCover(isPresented: $showDetailSheet, content: {DetailSheet()})
}
}