SwiftUI NavigationStack无法跳转至下一页面问题求助
问题根源
你把navigationDestination修饰符错误地放在了NavigationStack外部,导致SwiftUI无法将路径与目标视图关联,触发跳转时找不到匹配的视图,因此显示带警告图标的空白页。
修正方案1(基于字符串路径)
调整navigationDestination的位置,将其移到NavigationStack内部的根视图上:
@main struct CealUIApp: App { @State private var path = [String]() var body: some Scene { WindowGroup { NavigationStack(path: $path) { OnBoardingView(path: $path) // 将navigationDestination移至NavigationStack内部 .navigationDestination(for: String.self) { string in UserTypeView() } } } } }
更推荐的方案2(使用枚举路由)
用枚举替代字符串定义路由,避免拼写错误,同时提升代码可维护性:
- 定义路由枚举:
enum Route: Hashable { case userType }
- 修改CealUIApp代码:
@main struct CealUIApp: App { @State private var path = [Route]() var body: some Scene { WindowGroup { NavigationStack(path: $path) { OnBoardingView(path: $path) .navigationDestination(for: Route.self) { route in switch route { case .userType: UserTypeView() } } } } } }
- 更新OnBoardingView的按钮代码:
Button { path.append(.userType) } label: { Text("Hello") }
内容的提问来源于stack exchange,提问作者BraveEvidence
相关产品推荐
相关产品推荐

