使列表项可在编辑模式下选择,例如文档中的EditMode不起作用



除了删除和移动选项外,我还想添加在选择编辑模式时选择列表中项目的可能性。理想情况下,我想使用现有的编辑、删除和移动按钮,而不是编写自己的按钮。我尝试了文档中的示例。这对我不起作用。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")
}
}
}

最新更新