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

Xcode测试版中NavigationStack的navigationDestination无法跳转问题

问题分析与解决:NavigationStack无法跳转详情页

你的代码无法触发跳转的核心原因是类型不匹配:

  • destinations是String类型数组,NavigationLink传递的value为String值
  • 但navigationDestination注册的是Int.self类型的跳转目标,SwiftUI找不到对应类型的匹配项,因此点击无响应

修正方案一:匹配String类型目标

将导航目标的类型改为String.self,与传递的value类型保持一致:

struct ContentView: View {
    var destinations = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
    var body: some View {
        NavigationStack {
            List(destinations, id: \.self) { i in
                NavigationLink(value: i) {
                    Label("Row \(i)", systemImage: "\(i).circle")
                }
            }
            .navigationDestination(for: String.self) { i in
                Text("Detail \(i)")
            }
            .navigationTitle("Navigation")
        }
    }
}

修正方案二:改用Int类型数据源

如果希望用Int类型传递参数,直接调整数组类型及对应逻辑:

struct ContentView: View {
    var destinations = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    var body: some View {
        NavigationStack {
            List(destinations, id: \.self) { i in
                NavigationLink(value: i) {
                    Label("Row \(i)", systemImage: "\(i).circle")
                }
            }
            .navigationDestination(for: Int.self) { i in
                Text("Detail \(i)")
            }
            .navigationTitle("Navigation")
        }
    }
}

这并非NavigationStack的功能Bug,而是SwiftUI导航系统的基础规则:导航目标与传递的value必须严格类型匹配,调整后即可正常跳转。

内容的提问来源于stack exchange,提问作者Steven-Carrot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:57:21