Swiftui 如何返回带有ViewModifier的视图

Swiftui 如何返回带有ViewModifier的视图,swiftui,return-type,viewmodifier,Swiftui,Return Type,Viewmodifier,我想根据数组中字段的内容返回一个视图。这是可行的,但如果我尝试向视图添加ViewModifier,就会遇到问题。这行不通 struct CodesView: View { var body: some View { ScrollView{ ForEach(0 ..< codes.count) {idx in Result(selector: self.codes[idx].Zeile)

我想根据数组中字段的内容返回一个视图。这是可行的,但如果我尝试向视图添加ViewModifier,就会遇到问题。这行不通

struct CodesView: View {
    var body: some View {
            ScrollView{
                ForEach(0 ..< codes.count) {idx in
                    Result(selector: self.codes[idx].Zeile)
                }
            }
       }
   }
    struct Result: View{
        var selector: String

        var body: some View{
            switch selector {
            case "->Text1":
                return VStack{
                    Text("Lorem ipsum dolor sit amet")
                    .bold()
                }
            // serval other case will follow...
            default:
                return VStack{
                    Text("\(selector)")
                    .frame(width: 350, alignment: .leading)    // line throw an error
                    .font(.system(.body, design: .monospaced)) // line throw an error 
                }
            }
        }
    }
结构代码视图:视图{ var body:一些观点{ 滚动视图{ ForEach(0..Text1”: 返回VStack{ 文本(“Lorem ipsum dolor sit amet”) .bold() } //其他几个案件将接踵而至。。。 违约: 返回VStack{ 文本(“\(选择器)”) .frame(宽度:350,对齐方式:。前导)//行抛出错误 .font(.system(.body,design:.monospaced))//行抛出错误 } } } } 错误消息是: 函数声明不透明的返回类型,但其主体中的返回语句没有匹配的基础类型


我需要如何声明函数才能使用ViewModifier获得结果?对于不同的返回视图,我需要不同的布局。

以下内容解决了您的问题

struct Result: View {
    var selector: String

    var body: some View {
        Group {
            if self.selector == "->Text1" {
                VStack {
                    Text("Lorem ipsum dolor sit amet")
                        .bold()
                }
            } else {
                VStack {
                    Text("\(selector)")
                        .frame(width: 350, alignment: .leading)
                        .font(.system(.body, design: .monospaced))
                }
            }
        }
    }
}

不能在正文中使用switch语句。这里只允许简单的“如果”

但请在此处检查此答案,它有助于:

例如:

enum T {
    case a
    case b
}

struct ContentView: View {

    var a : T =  .a

    var body : some View {

        Group { () -> Text in
            switch a {
            case .a:
                return Text("a")
            case .b:
                return Text("b")
            }
        }
    }
}