Xcode测试版中NavigationStack的navigationDestination无法跳转问题
你的代码无法触发跳转的核心原因是类型不匹配:
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
相关产品推荐
相关产品推荐

