SwiftUI不喜欢切换吗?

问题描述 投票:-3回答:1

[尝试遵循this discussion,我实现了Yurii Kotov的建议:

struct ContentView: View {

@State private var index = 0

@ViewBuilder
 var body: some View {
   if index == 0 {
       MainView()
   } else {
       LoginView()
   }
}

效果很好。但是,如果我尝试使用switch语句代替:

    switch  index {
        case 0: MainView()
        case 1: LoginView()
        default:
            print("# error in switch")
        }

没有任何反应。没有错误警报,也没有任何结果。有人可以帮忙吗?

swift if-statement switch-statement swiftui
1个回答
0
投票
如@Sweeper所说:您的if...elseswitch...case语句不相等。主要思想是:body只是View protocol

计算变量,它应该返回其类型。当然,您可以使用switch...case语句来完成此操作。您的代码段错误是在default语句中:body无法返回() -> Void,只有some View。因此您的代码应如下所示:

struct ViewWithSwitchStatements: View { @State var option = 0 var body: some View { switch option { case 1: return AnyView(Text("Option 1")) case 2: return AnyView(Text("Option 2")) default: return AnyView(Text("Wrong option!")) } } }
但是您不能将其放入VStack或其他内容,例如if...else语句。
© www.soinside.com 2019 - 2024. All rights reserved.