过滤 ForEach 时,SwiftUI 导航链接不起作用

Hap*_*llo 7 user-interface swift swiftui swiftui-navigationlink

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

在此处输入图片说明

这是我的代码:

 ForEach(decks.filter{$0.format == formats[selectedFormat]}, id: \.self) { deck in
                    HStack {
                        ZStack {
                            DeckRow(deck: deck)
                            NavigationLink(destination: DeckView()) {
                                EmptyView()
                            }
                        }
                    }
                }
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 4

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

ZStack {
    DeckRow(deck: deck)
    NavigationLink(destination: DeckView()) {
        EmptyView()
    }.id(deck)        // << here !!
}
Run Code Online (Sandbox Code Playgroud)

或者,正如预期的那样,使其DeckView依赖于deck,例如DeckView(model: deck),这也使每个导航链接都是唯一的并且可以在过滤器上刷新。