【问题标题】:SwiftUI Navigation link doesn't work when filtering ForEach过滤 ForEach 时 SwiftUI 导航链接不起作用
【发布时间】:2020-09-08 08:16:27
【问题描述】:

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

这是我的代码:

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

【问题讨论】:

    标签: swift user-interface swiftui swiftui-navigationlink


    【解决方案1】:

    你必须给你的deckview提供“deck”,这样它才能显示正确的deckview

    【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2010-12-22
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多