Ios SwiftUI EditButton()错误

Ios SwiftUI EditButton()错误,ios,swift,swiftui,Ios,Swift,Swiftui,我在一个模态中呈现一个列表。如果我在导航视图中,编辑按钮就完全坏了 如果我从中删除了NavigationView,那么一开始它似乎可以工作,第二次显示时它又会被破坏 struct ContentView: View { @State var showSheetView = false var body: some View { Button(action: { self.showSheetView.toggle() }) {

我在一个模态中呈现一个列表。如果我在导航视图中,编辑按钮就完全坏了

如果我从中删除了NavigationView,那么一开始它似乎可以工作,第二次显示时它又会被破坏

struct ContentView: View {
@State var showSheetView = false

var body: some View {
        Button(action: {
            self.showSheetView.toggle()
        }) {
            Image(systemName: "bell.circle.fill")
                .font(Font.system(.title))
        }
        .sheet(isPresented: $showSheetView) {
            SheetView()
        }
}
}

手动处理
editMode
对我来说在macOS Big Sur上使用Xcode 12.1/iOS 14.1非常有效

当我旋转模拟器时,
EditButton
在编辑模式下再次显示“Edit”时,我也遇到了一个问题,下面的解决方案也解决了这个问题

以下解决方案使用一个自定义的
EditButton
struct来处理手动
editMode
绑定。 首先是自定义编辑按钮:

struct EditButton:视图{
@绑定变量editMode:editMode
var body:一些观点{
钮扣{
切换编辑模式{
case.active:editMode=.inactive
case.inactive:editMode=.active
默认值:中断
}
}标签:{
如果让isEditing=editMode.isEditing,则isEditing{
文本(“完成”)
}否则{
文本(“编辑”)
}
}
}
}
使用上面的编辑按钮非常简单:

struct SheetView:View{
@国家私有变量myArray:[字符串]=[“一”、“二”、“三”]
@状态私有变量editMode=editMode.inactive
var body:一些观点{
导航视图{
VStack{
名单{
ForEach(myArray,id:\.self){item in
文本(项目)
}.onDelete(执行:{indexSet in
})
}
}
.navigationBarItems(尾部:EditButton(editMode:$editMode))
.environment(\.editMode,$editMode)
.animation(.spring(响应:0))
}
}
}
尾部导航栏项中的
EditButton
处理保存在
SheetView
中的
@State private var editMode
。 然后使用environment
.environment(\.editMode,$editMode)
将该
editMode
注入内部视图。 对于编辑模式转换的动画效果,我发现
.spring(响应:0)
最合适。

而不是

.navigationBarItems(trailing: EditButton())
你可以试试:

.toolbar { EditButton() }

我也有同样的问题,这对我来说效果很好。

你能描述一下你认为什么是坏的以及期望的效果是什么吗。这两部电影看起来差不多。所以我希望在点击编辑按钮时进入编辑模式。这意味着将显示每行的红色按钮。有意义吗?看第二张图片,我第一次展示屏幕时,屏幕上会出现。如果你将编辑按钮与列表而不是vstack关联,会发生什么?同样的错误…对我来说很有效,但很奇怪,不是吗?
.toolbar { EditButton() }