You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 11 Beta 5中SwiftUI NavigationLink点击无响应问题求助

解决Xcode 11 Beta 5中SwiftUI NavigationLink无法跳转的问题

我刚在Xcode 11 Beta 5 + MacOS Catalina Beta 5环境下碰到过一模一样的问题!不管是自定义的NavigationLink还是官方Landmark示例里的跳转都完全没反应,这确实是该Beta版本的已知bug。

这里有两个靠谱的临时修复方案:

方案1:使用绑定状态手动触发跳转

通过给NavigationLink绑定一个isActive状态变量,用Button来控制这个状态,间接触发页面跳转:

import SwiftUI

struct SwiftUIView : View {
    @State private var shouldNavigate = false
    
    var body: some View {
        NavigationView {
            VStack {
                // 用Button触发状态变更
                Button(action: {
                    self.shouldNavigate = true
                }) {
                    Text("Click")
                }
                
                // 隐藏的NavigationLink,通过状态控制跳转
                NavigationLink(
                    destination: Product(),
                    isActive: $shouldNavigate
                ) {
                    EmptyView()
                }
            }
            .navigationBarTitle(Text("Navigation"))
        }
    }
}

#if DEBUG
struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}
#endif

方案2:将NavigationLink放入List/Form容器中

在Beta 5中,NavigationLink似乎需要处于可滚动容器(比如List或Form)内才能正常响应点击事件,把你的代码调整成这样就能解决:

import SwiftUI

struct SwiftUIView : View {
    var body: some View {
        NavigationView {
            List {
                NavigationLink(destination: Product()) {
                    Text("Click")
                }
            }
            .navigationBarTitle(Text("Navigation"))
        }
    }
}

#if DEBUG
struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}
#endif

这个bug是Beta版本的专属问题,等苹果推送正式版更新后应该就会自动修复了。

内容的提问来源于stack exchange,提问作者Mane Manero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:34:00