我有一个这样的视图:
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?
}