我正在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")
}
}
}
}
}
}