如何使用协议填充此案例以查看

How do I fill this case for a view with a protocol

我有这样的看法:

struct Panel<T:MyProtocol>: View {
  @ObservedObject private var model:T

  init(_ model:T) {
    self.model = model
  }

此视图和其他视图将显示为 .sheet

然后我有这个:

class SheetController:ObservableObject {

  enum SheetToDisplay {
    case panel
    case about
    case check
  }

  @Published var displaySheet = false
  var sheetToDisplay:SheetToDisplay?
}

我的 ContentView 我有一个这样的变量:

  var sheetController: SheetController()

因此,当我要将这些视图之一显示为 sheets 时,我必须这样做,例如:

sheetController.sheetToDisplay = .panel
sheetController.displaySheet = true

在决定必须显示哪个 sheet 的模块上,我必须有这样的东西:

case .panel(let model):
  Panel(model)

但要使它起作用,枚举中的 case panel 必须类似于

  case panel(_ model:T)

最后一行错误:“找不到 T 是范围”

如何声明 case panel

此外,在SheetController中添加MyProtocol约束。

class SheetController<T: MyProtocol>: ObservableObject {  // <-- Here
    
    enum SheetToDisplay {
        case panel(_ model:T)
    }
    
    @Published var displaySheet = false
    var sheetToDisplay: SheetToDisplay?
}