SwiftUI Navigation link 在过滤 ForEach 时不起作用

SwiftUI Navigation link doesn't work when filtering ForEach

我有一个分段选择器来过滤 ForEach 中的列表行,但 NavigationLinks 在过滤时停止工作,它们有点击动画但从不改变视图。我在甲板上使用 CoreData。当我点击标准中的行时它们正常工作,然后我点击 Wild 并且 NavigationLinks 仍然有效但是当我回到标准时会发生这种情况:

这是我的代码:

 ForEach(decks.filter{[=11=].format == formats[selectedFormat]}, id: \.self) { deck in
                    HStack {
                        ZStack {
                            DeckRow(deck: deck)
                            NavigationLink(destination: DeckView()) {
                                EmptyView()
                            }
                        }
                    }
                }

你还必须给你的 deckview "deck",这样它才能显示正确的 deckview

提供的代码不可测试,但通过阅读假设问题的原因是在平等导航 links 中,请尝试以下操作(这将导致在过滤时更新 links)

ZStack {
    DeckRow(deck: deck)
    NavigationLink(destination: DeckView()) {
        EmptyView()
    }.id(deck)        // << here !!
}

或者,正如预期的那样,使 DeckView 依赖于 deck,如 DeckView(model: deck),这也使每个导航 link 唯一且可在过滤器上刷新.