如何使用绑定关联Swift枚举?
我有一个如何使用绑定关联Swift枚举?,swift,swiftui,Swift,Swiftui,我有一个GroupView,它接受绑定作为参数,因为我希望GroupView修改枚举中的数据 有人能帮我解决这个问题吗 import SwiftUI struct ContentView: View { @ObservedObject var viewModel = ViewModel() var body: some View { VStack { GroupView(group: /* What do i put here? */)
GroupView
,它接受绑定作为参数,因为我希望GroupView修改枚举中的数据
有人能帮我解决这个问题吗
import SwiftUI
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()
var body: some View {
VStack {
GroupView(group: /* What do i put here? */) // <----------------
}
}
}
struct GroupView: View {
@Binding var group: Group
var body: some View {
Text("Hello World")
}
}
class ViewModel : ObservableObject {
@Published var instruction: Instruction!
init() {
instruction = .group(Group(groupTitle: "A Group struct"))
}
}
enum Instruction {
case group(Group)
}
struct Group { var groupTitle: String }
导入快捷界面
结构ContentView:View{
@ObservedObject var viewModel=viewModel()
var body:一些观点{
VStack{
GroupView(group:/*我在这里放什么?*/)/好吧,这肯定会有用……但可能有更好的方法解决您的问题。但要确定这一点,没有人比您处于更好的位置。因此,我只回答您关于如何传递绑定的问题
struct ContentView:View{
@ObservedObject var viewModel=viewModel()
var body:一些观点{
VStack{
GroupView(组:viewModel.groupBinding)
}
}
}
类ViewModel:ObservableObject{
@发布的var指令:指令!
init(){
指令=.group(组(组标题:“组结构”))
}
var-groupBinding:Binding{
返回绑定(获取:{
如果案例组(设g)=自我指导{
返回g
}否则{
返回组(groupTitle:)
}
},集:{
self.instruction=.group($0)
})
}
}
好吧,这肯定会奏效……但可能有更好的方法解决您的问题。但要确定这一点,没有人比您更适合。因此,我将回答您关于如何通过绑定的问题
struct ContentView:View{
@ObservedObject var viewModel=viewModel()
var body:一些观点{
VStack{
GroupView(组:viewModel.groupBinding)
}
}
}
类ViewModel:ObservableObject{
@发布的var指令:指令!
init(){
指令=.group(组(组标题:“组结构”))
}
var-groupBinding:Binding{
返回绑定(获取:{
如果案例组(设g)=自我指导{
返回g
}否则{
返回组(groupTitle:)
}
},集:{
self.instruction=.group($0)
})
}
}
这是编译吗?啊..如果让你进入绑定,我没有意识到这很好!是的,出价初始值设定项给了你很大的发挥空间;-)你能返回一个可选绑定并只显示组视图(如果不是零)并强制执行可选绑定吗?Getter和Setter的东西也很酷。这应该是可能的。起初我想到了我们正在绑定,但由于OP询问绑定,我保留了原样的答案。这个编译吗?啊..如果让你进入绑定,你就移动了,我没有意识到这很好!是的,出价初始值设定项给了你很大的发挥空间;-)你能返回一个可选绑定并仅显示组视图(如果不是零)并强制执行可选的吗?Getter和Set这件事也很酷。这应该是可能的。起初我想使用绑定,但因为OP问到了绑定,我留下了原样的答案。