我正在尝试使用 NavigationLink
启用列表的编辑功能。我有以下几点:
EditView - 想使用这个视图来编辑列表项:
import SwiftUI
import Combine
struct EditView: View {
@Binding var index: String
@EnvironmentObject var taskStore: TaskStore
var body: some View {
Text("Hello, World!")
}
}
struct EditView_Previews: PreviewProvider {
@State static var index = ""
static let taskStore = TaskStore()
static var previews: some View {
EditView(index: $index)
}
}
以及应该使用 NavigationLink
来编辑项目的列表:
if(self.taskStore.tasks.count != 0){
List {
ForEach(self.taskStore.tasks) {
task in
NavigationLink(destination: EditView(index: task.$id)){
VStack(alignment: .leading, spacing: 0){
HStack{
VStack{
Text(task.description)
.font(.headline)
Text(String(task.outputYears) + "YRS" + String(task.outputMonths) + "MTHS")
Spacer()
}
}
}
}
}
.onDelete(perform: self.onDelete)
}
.navigationBarTitle("Menu")
.listStyle(PlainListStyle())
.padding(.top, 5)
}
这一行似乎是问题所在:
NavigationLink(destination: EditView(index: task.$id))
如何将任务 ID 传递给 EditView
以允许我在任务存储中编辑正确的时间?
答案 0 :(得分:0)
在这种情况下,您不需要绑定索引 - 只需将其作为值传递
struct EditView: View {
var index: String // << here !!
//...
}
和
NavigationLink(destination: EditView(index: task.id)){ // << here !!