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

SwiftUI NavigationStack无法跳转至下一页面问题求助

解决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(使用枚举路由)

用枚举替代字符串定义路由,避免拼写错误,同时提升代码可维护性:

  1. 定义路由枚举:
enum Route: Hashable {
    case userType
}
  1. 修改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()
                        }
                    }
            }
        }
    }
}
  1. 更新OnBoardingView的按钮代码:
Button {
    path.append(.userType)
} label: {
    Text("Hello")
}

内容的提问来源于stack exchange,提问作者BraveEvidence

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:15:46