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
相关产品推荐
相关产品推荐

