导航链接在 SwiftUI 中只能使用一次

Posted

技术标签:

【中文标题】导航链接在 SwiftUI 中只能使用一次【英文标题】:Navigation Link only works once in SwiftUI 【发布时间】:2020-04-12 09:16:24 【问题描述】:

在名为BuildingListsAndNavigation 的苹果 SwiftUI 代码教程中,它们向您展示了如何使用 NavigationLinks。但是,一旦您点击链接然后点击导航返回按钮,相同的链接将被禁用,直到您点击另一个链接,然后再次点击返回按钮。

这个问题不仅仅发生在苹果的 SwiftUI 教程中,它也发生在我自己的 SwiftUI 项目中。怎么做才能连续点击同一个链接两次?

这是一些示例代码

struct LandmarkList: View 
    var body: some View 
        NavigationView 
            List(0 ..< 5)  number in
                NavigationLink(destination: Text("next page")) 
                        Text("Row\(number)")
                
            
            .navigationBarTitle(Text("Landmarks"))
        
    

【问题讨论】:

许多帖子是旧的或涉及其他变量。我的帖子是我见过的唯一一个给出了可行解决方案的答案。 查看我的解决方案here 【参考方案1】:

目前 NavigationLink 存在 2 个主要错误。第一个是你提到的你不能两次访问同一个链接。如果您决定添加第二个链接,以便至少测试您的 UI,您会遇到第二个错误,即当您点击第二个链接时,它会在推送它之后弹回根目录。

这是最新的 Xcode 版本 11.3 (11C29) 及其随附的 ios 13.3 (17C45) 模拟器。

iPhone XR 上的 iOS 13.3 (17C45) 没有这些错误,这很奇怪,因为它与模拟器的内部版本号相同。

【讨论】:

【参考方案2】:

它适用于不在模拟器上的设备。

【讨论】:

取决于操作系统,这是一个混乱的错误,有些测试版可以正常工作,有些不能,有些最终版本可以正常工作。你的设备在运行什么? 是的,至少 13.5 是这样。【参考方案3】:

似乎 Xcode 11.4 上的错误已修复

【讨论】:

以上是关于导航链接在 SwiftUI 中只能使用一次的主要内容,如果未能解决你的问题,请参考以下文章

文本字段点击正在关闭 SwiftUI 中的导航链接

如何在 SwiftUI 的按钮中添加导航按钮链接?

SwiftUI:导航链接中的自定义标签显示为灰色

SwiftUI 和双导航栏

使用表单 SwiftUI 的导航链接

SwiftUI模态表示仅可从navigationBarItems进行一次