ForEach(bookData){ bookDetail in
Button(action: {
//Page number update
}) {
BookView(book: bookDetail)
}
.foregroundColor(.primary)
.background(
NavigationLink(destination: EditBook(book: bookDetail), isActive: $showEdit){
EmptyView()
}
)
.contextMenu{
Button(action: {
self.showEdit = true
}) {
Label("Edit", systemImage: "pencil")
}
Button(action: {
//Delete action
}) {
Label("Delete", systemImage: "trash")
}
}
}
转到EditBook的navigationLink发送错误的视图。在我的数组中,它正在运行一个json文件,当我尝试发送第二条记录时,它似乎通过了第一条记录,因为EditBook视图正在显示第一条记录中的数据。另外,更奇怪的是,第一条记录传递了第三条记录的数据(只有3条记录)。
不知道发生了什么,虽然这可能是因为每个记录的ID从1开始,但我将其更改为0,却没有用。
ps。我不知道代码块的格式是什么
答案 0 :(得分:0)
Ah ..使用ForEach
的原因是,因为您通过一种状态激活了容器中的所有链接,所以必须使用不同的链接构造函数使它们对于每行/单元格唯一,如下所示(可能还需要将您的bookDetail
类型(我假设是Book
才能适用于Hashable)
@State private var selectedBook: Book? = nil
...
ForEach(bookData){ bookDetail in
Button(action: {
//Page number update
}) {
BookView(book: bookDetail)
}
.foregroundColor(.primary)
.background(
NavigationLink(destination: EditBook(book: bookDetail), tag: bookDetail, selection: $selectedBook) {
EmptyView()
}
)
.contextMenu{
Button(action: {
self.selectedBook = bookDetail
}) {
Label("Edit", systemImage: "pencil")
}
Button(action: {
//Delete action
}) {
Label("Delete", systemImage: "trash")
}
}
}