这段代码在不在TabView
中时工作得很好。一旦它被放在TabView
中,.editMode
的更改似乎对List
没有任何影响。
struct ContentView: View {
@Environment(\.editMode) var editMode
var body: some View {
TabView {
myView().tabItem {
Text("test")
}.tag(0)
}
}
}
struct myView : View {
@State var list = ["a", "b", "c"]
@Environment(\.editMode) var editMode
var body: some View {
VStack {
Button(action: {
if self.editMode?.wrappedValue == .active {
self.editMode?.wrappedValue = .inactive
} else {
self.editMode?.wrappedValue = .active
}
}, label: {
Text("Edit")
})
List {
ForEach(list, id:\.self) {val in
Text(val)
}.onDelete(perform: { indexSet in
()
})
}
}
}
}
字符串
不确定这是一个bug,还是.editMode
在TabView
中有什么不同。
4条答案
按热度按时间nbewdwxp1#
您可以显式地注入
editMode
:字符串
esbemjvw2#
你可以通过添加
EditButton
来切换列表视图的编辑模式字符串
xe55xuns3#
尝试使用
EditButton()
而不是创建普通的Button
这对我很有效:
字符串
eit6fx6z4#
创建一个自定义的
EditMode
变量并将其注入到相关的子视图中(包括EditButton
,以避免滚动您自己的视图)可以解决这个问题。在iOS 17.2上测试
Example GIF
字符串