SwiftUI 无法在函数上返回 View

atu*_*n23 3 swift swiftui

我正在尝试View根据功能返回所选菜单项。但它会抛出错误:

协议“View”只能用作通用约束,因为它具有 Self 或关联的类型要求。

这是我的代码:

enum MenuItem {
  case Main
  case Report
}
struct Menu: View {
  @State var activeItem: MenuItem = .Main

  private func getActiveView() -> View {
    switch activeItem {
      case .Main:
        return DashboardView()
      case .Report:
        return ReportView()
    }
  }

  var body: some View {
    ...
    getActiveView()
    ...
  }
}

struct DashboardView: View {
    var body: some View {
        Text("Contact")
    }
}
struct ReportView: View {
    var body: some View {
        Text("Contact")
    }
}
Run Code Online (Sandbox Code Playgroud)

我是新来的SwiftUI。有什么想法如何返回吗View

Asp*_*eri 5

SwiftUI 2

这是使用 Xcode 12b / iOS 14 测试的解决方案

struct Menu: View {
    @State var activeItem: MenuItem = .Main

    // make function ViewBuilder
    @ViewBuilder
    private func getActiveView() -> some View {
        switch activeItem {
        case .Main:
            DashboardView()     // don't use 'return' as it disables ViewBuilder
        case .Report:
            ReportView()
        }
    }

    var body: some View {
        getActiveView()
    }
}
Run Code Online (Sandbox Code Playgroud)