SwiftUI NavigationStack导航目标重复声明警告问题求助
问题根源
你遇到的警告是因为同一个GreaterViewOptions类型的navigationDestination被多次声明在导航栈中,SwiftUI规定同一数据类型的导航目标只需要在NavigationStack的根层级声明一次,重复声明会触发警告且只有最靠近根的声明生效。
具体解决步骤
彻底移除子视图中的重复声明
删掉ContentView、WelcomeScreenView等所有子视图里针对GreaterViewOptions的navigationDestination修饰符——你之前尝试添加的这些声明就是警告和跳转异常的原因。确保导航目标只在根视图声明
保持BumperScreen里的NavigationStack下的navigationDestination声明即可,所有子视图的跳转都通过绑定的path添加枚举值来触发,不需要额外声明导航目标:// BumperScreen中的正确声明,保留这一处即可 NavigationStack(path: $path) { // ...你的页面内容... .navigationDestination(for: GreaterViewOptions.self) { option in option.view($path) } }检查子视图的path传递
确保所有子视图都正确接收path的绑定(比如ContentView(path: path)、WelcomeScreenView(path: path)),这样子视图里的跳转按钮(比如continueButton)才能正确修改根导航栈的路径,不会触发重复声明问题。
额外注意
你的枚举实现方式是合理的,通过view(_:)方法返回对应视图的逻辑没问题,只要保证导航目标只在根NavigationStack下声明一次,所有子视图都复用这个规则,就能消除警告且正常跳转。
内容的提问来源于stack exchange,提问作者kenada97
相关产品推荐
相关产品推荐

