list - editMode 在 .sheet 或 .fullScreenCover 但使用 NavigationLink 的情况下不起作用
问题描述
我正在尝试启用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()})
}
}
解决方案
推荐阅读
- git - 将文件从 master 复制到新分支
- anaconda - 删除或修复损坏的 anaconda 安装
- c# - 如何设置与正确路线匹配的退出条件
- parsing - 在卫队haskell中使用case表达式时解析错误
- ruby-on-rails - 您的经常性事件数据模型是什么?
- python - discord py - message.mentions "else" 什么都不做
- javascript - 交替更改点击值javascript
- python-3.x - Odoo 13 API如何将空搜索结果保存为字符串
- python - 不支持的语言环境设置 Mac python
- r - 如何检查变量是否存在于R中/将变量分配给特定函数的环境?