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

SwiftUI中ScrollView内部的NavigationLink无法点击如何解决?

问题解决方法

NavigationLink灰显且无法点击的核心原因是其缺少导航容器上下文,只有嵌套在导航容器内的NavigationLink才会正常生效,具体解决步骤如下:

  • 外层添加导航容器
    iOS 16及以上版本使用NavigationStack包裹你的现有代码,修改后示例如下:
NavigationStack {
    ScrollView () {
        VStack(spacing: 0) {
             ForEach(0..<10) {position in
                 NavigationLink(destination: DestinationView(position)) {
                     TimetableCellView(position)
                 }
                 .padding(.all, 0.0)
             }
             .padding(.all, 0.0)  
        }
        .cornerRadius(30.0)
        .padding(.all)
    }
}
  • 兼容低版本系统
    如果需要适配iOS 15及更早的系统,将上述代码中的NavigationStack替换为NavigationView即可。
  • 异常场景排查
    如果添加导航容器后问题仍然存在,依次检查以下两点:
    • 确认TimetableCellView内部没有添加独立的onTapGesture点击事件,避免覆盖NavigationLink的点击响应
    • 确认你没有给ScrollView、VStack或者父级视图添加.disabled(true)属性,导致全局交互被禁用

内容的提问来源于stack exchange,提问作者Swift lover

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:27:00