如何使用协议填充此案例以查看
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?
}
我有这样的看法:
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?
}