CoreData列表项,编辑视图



需要帮助将CoreData保存到数据库后传递给另一个视图。我有一个单独的"添加项目"视图。列表视图显示已排序的项目。使用NavigationView,我可以点击查看每个条目,但是我想要。ontapgesture覆盖一个带有可编辑列表项的新视图。

现在这可以看到每个列表项的更多细节,但我宁愿让它用。ontapgesture打开一个新视图,但不知道如何将数据库项传递给新视图并将其设置为编辑。

NavigationView{
List {
ForEach(newItem) { newItems in
NavigationLink(destination: TapItemView(database: newItems)) {
DatabaseRowView(database: newItems)}
}
}.onDelete(perform: deleteItem)
}

?

观察:在您的代码示例中——"ForEach(newItem) {newItem in"应该是ForEach(newItems) {newItem in"。换句话说,集合放在ForEach括号中,单个项目位于";In;"之前。有了这个,我开始使用Xcode生成的项目与Core Data为本例(Xcode Version 13.1)。修改包含在下面的代码中。

@State var showEditView = false
@State var tappedItem: Item = Item()
var body: some View {
NavigationView {
List {
ForEach(items) { item in
Text(item.timestamp, formatter: itemFormatter)
.onTapGesture {
tappedItem = item
showEditView = true
}
}
.sheet(isPresented: $showEditView) {
EditView(item: $tappedItem)
}
}
}
}

这是选中的项目可能的接收视图:

struct EditView: View {
@Binding var item: Item
var body: some View {
NavigationView {
Form {
Section(header: Text("Date")) {
DatePicker("Date Selection",
selection: $item.timestamp,
displayedComponents: [.date]
)
.datePickerStyle(.compact)
.labelsHidden()
}
}
}
}

最新更新