导航堆栈类型 '() -> ()' 不符合'View'



我正在Xcode 14中使用SwiftUI构建一个简单的注册和登录用户流。我正在尝试使用NavigationStack结构,但收到以下错误。

我正在寻求更正此代码,或者实现另一种不推荐使用的方法,即在SwiftUI中使用导航来控制不同的应用程序视图。我希望通过创建其他视图(忘记密码、使用电子邮件链接登录等(来进一步扩展这一点。

import SwiftUI
enum Route : Hashable {
case login
case signup
case app
}
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
NavigationStack {
ContentView()                                       // Type '() -> ()' cannot conform to 'View'
.navigationDestination(for: Route.self) {         // Type '() -> ()' cannot conform to 'View'
route in {
switch route {
case .login:
Text("Login")
case .signup:
Text("Sign Up")
}
}
}
}
}
}
}

您在route in之后添加了额外的{,因此Xcode也添加了}。所以去掉这个额外的开始{和结束}。现在,在您的交换机案例中修复此问题后,您因此错过了app案例的处理,您将得到Switch must be exhaustive错误。要解决此问题,请在交换机中添加app大小写或default大小写。在修复了这两个问题之后,您的代码将如下所示。

@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
NavigationStack {
ContentView()
.navigationDestination(for: Route.self) { route in
switch route {
case .login:
Text("Login")
case .signup:
Text("Sign Up")
case .app:
Text("App")
}
}
}
}
}
}

最新更新