函数声明了一个不透明的返回类型“some View”,但其主体中的返回语句没有匹配的基础类型

use*_*629 5 view swift swiftui

我在 var view: some View{.

enum HomeButtons: Int, Hashable, CaseIterable{
    case registerSignal = 1
    case setAlarm = 2
    case tV = 3
    case test = 4
    
    var image: String{
        switch self{
        case .registerSignal:
            return "wave.3.backward"
        case .setAlarm:
            return "alarm.fill"
        case .tV:
            return "tv.fill"
        case .test:
            return "av.remote.fill"
        }
    }
    var text: String{
        switch self{
        case .registerSignal:
            return "Register Signal for TV"
        case .setAlarm:
            return "Set up Alarm"
        case .tV:
            return "TV and Sequences"
        case .test:
            return "Test Device"
        }
    }
    var view: some View{                                 <------- Error is displayed here    
        switch self{
        case .registerSignal:
            return RegisterView(title: self.text)
        case .setAlarm:
            return Text("Set up Alarm")
        case .tV:
            return Text("TV and Sequences")
        case .test:
            return Text("Test Device")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
struct RegisterView: View{
    var title: String
    var body: some View{
        ScrollView{
            ForEach(getTVList(), id: \.TVID){ TV in
                NavigationLink(value: TV.TVID){
                    Text(TV.name)
                }
            }
        }
        .background(Color("ToledoGolden"))
        .foregroundColor(.accentColor)
        .navigationTitle(title)
    }
}

Run Code Online (Sandbox Code Playgroud)

我尝试将var view: some View更改为var view: any View错误消失了,但在我调用HomeButtons.view时收到此错误消息:Type 'any View' can not conform to 'View'

lor*_*sum 14

您必须将变量设置为 an@ViewBuilder并删除return

enum HomeButtons: Int, Hashable, CaseIterable{
    case registerSignal = 1
    case setAlarm = 2
    case tV = 3
    case test = 4
    
    var image: String{
        switch self{
        case .registerSignal:
            return "wave.3.backward"
        case .setAlarm:
            return "alarm.fill"
        case .tV:
            return "tv.fill"
        case .test:
            return "av.remote.fill"
        }
    }
    var text: String{
        switch self{
        case .registerSignal:
            return "Register Signal for TV"
        case .setAlarm:
            return "Set up Alarm"
        case .tV:
            return "TV and Sequences"
        case .test:
            return "Test Device"
        }
    }
    @ViewBuilder var view: some View{
        switch self{
        case .registerSignal:
            RegisterView(title: self.text)
        case .setAlarm:
            Text("Set up Alarm")
        case .tV:
            Text("TV and Sequences")
        case .test:
            Text("Test Device")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 但是,到底如何从如此神秘的错误消息中判断出这一点呢? (3认同)