我有一个分段选择器,可以过滤ForEach中的列表行,但是导航链接在过滤时停止工作,它们具有点击动画,但是从不改变视图。我在甲板上使用CoreData。当我点击“标准”中的行时,它们可以正常工作,然后点击“野生”,导航链接仍然有效,但是当我回到“标准”时,会发生以下情况:
这是我的代码:
ForEach(decks.filter{$0.format == formats[selectedFormat]}, id: \.self) { deck in
HStack {
ZStack {
DeckRow(deck: deck)
NavigationLink(destination: DeckView()) {
EmptyView()
}
}
}
}
答案 0 :(得分:4)
所提供的代码不可测试,但是通过阅读假定问题的原因在相同的导航链接中,请尝试以下操作(这将导致在过滤时更新链接)
ZStack {
DeckRow(deck: deck)
NavigationLink(destination: DeckView()) {
EmptyView()
}.id(deck) // << here !!
}
或者,可以像预期的那样,使DeckView
依赖于deck
,就像DeckView(model: deck)
一样,这也使每个导航链接在过滤器上都是唯一且可刷新的。
答案 1 :(得分:1)
您还必须在甲板视图中添加“甲板”,以便它可以显示正确的甲板视图