如何使用协议填充视图的此案例



我有一个这样的视图:

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?
}

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

var sheetController: SheetController()

因此,当我要将其中一个视图显示为图纸时,我必须这样做,例如:

sheetController.sheetToDisplay = .panel
sheetController.displaySheet = true

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

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?
}

最新更新