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

时间:2020-05-21 16:14:43

标签: swift user-interface swiftui swiftui-navigationlink

我有一个分段选择器,可以过滤ForEach中的列表行,但是导航链接在过滤时停止工作,它们具有点击动画,但是从不改变视图。我在甲板上使用CoreData。当我点击“标准”中的行时,它们可以正常工作,然后点击“野生”,导航链接仍然有效,但是当我回到“标准”时,会发生以下情况:

enter image description here

这是我的代码:

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

您还必须在甲板视图中添加“甲板”,以便它可以显示正确的甲板视图