除了删除和移动选项外,我还想添加在选择编辑模式时选择列表中项目的可能性。理想情况下,我想使用现有的编辑、删除和移动按钮,而不是编写自己的按钮。我尝试了文档中的示例。这对我不起作用。editMode
的值总是.inactive
。我正在使用XCode 14。我的应用程序的部署目标是iOS 16.0。
这是我的源代码:
import SwiftUI
struct ContentView: View {
@Environment(.editMode)
private var editMode
@State
private var name = "Maria Ruiz"
var body: some View {
NavigationView {
Form {
if editMode?.wrappedValue.isEditing == true {
TextField("Name", text: $name)
} else {
Text("test")
}
}
.animation(nil, value: editMode?.wrappedValue)
.toolbar { // Assumes embedding this view in a NavigationView.
EditButton()
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environment(.managedObjectContext, PersistenceController.preview.container.viewContext)
}
}
它总是显示测试文本。我还尝试了一个带有.onChange
修饰符的变体,得到了相同的结果。
转发来自https://developer.apple.com/forums/thread/716434:
尝试从容器,如
List
/Form
。
struct ContentView: View {
var body: some View {
NavigationView {
Form {
MyForm()
}
.toolbar { // Assumes embedding this view in a NavigationView.
EditButton()
}
}
}
}
和
struct MyForm: View {
@Environment(.editMode)
private var editMode
@State
private var name = "Maria Ruiz"
var body: some View {
Text(String(editMode!.wrappedValue.isEditing))
if editMode?.wrappedValue.isEditing == true {
TextField("Name", text: $name)
} else {
Text("test")
}
}
}