【问题标题】:iOS15 - First NavigationLink doesn't work if onAppear of new view updates ObservedObjectiOS15 - 如果新视图的 onAppear 更新 ObservedObject,第一个 NavigationLink 不起作用
【发布时间】:2021-12-05 07:14:24
【问题描述】:

这是一个我无法解决的非常奇怪的问题。

仅在 iOS 15 上发生,并且仅在我第一次尝试打开此特定 NavigationLink 时发生。

我有 3 个 SwiftUI 视图:

  • ContentView(入口点)
  • 详细视图
  • 项目视图

ContentView 是 DetailViews 的列表,在详细视图中,如果 ItemViews 可以有任意数量。

我有一个带有Published 属性count 的 ObservableObject,它只能从 ContentView 访问。在 ItemView 中,我有一个由 onAppear 触发的函数,它会更新 ObservedObject 中的 count。

当我在打开应用程序后第一次打开 ItemView 时,它会移动到视图但立即返回到 DetailView。当我再次打开它时,它不会发生,即使count 再次更新。

我花了很多时间调试这个问题,但我没有想法。我曾尝试在 Swift Playground 中重现它,但我在那里尝试的一切似乎都按预期工作。

我希望有人知道如何解决这个问题,我将不胜感激!

【问题讨论】:

    标签: ios swift swiftui ios15


    【解决方案1】:

    如果您使用的是导航链接,我强烈建议您使用自定义链接。我不明白为什么这只发生在 ios 15 中,但我在以前的操作系统版本中遇到过具有相同视图/逻辑的类似错误。

    【讨论】:

    • 是的,我使用的是 SwiftUI 的NavigationLink,你说的“自定义”是什么意思?我传递的是自定义视图,而不是字符串。
    • link 该视频应该可以解决您的问题。它展示了 navlink 的缺陷以及如何使用 ontapgesture、加载视图和 segue 创建您自己的自定义 navlink。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多