我有一个接受绑定(bind)作为参数的 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 }
最佳答案
好吧,这肯定会奏效...但可能有更好的方法来解决您的问题。但没有人比你更能确定这一点。所以我只回答你关于如何传递绑定(bind)的问题。
struct ContentView: View {
@ObservedObject var viewModel = ViewModel()
var body: some View {
VStack {
GroupView(group: viewModel.groupBinding)
}
}
}
class ViewModel : ObservableObject {
@Published var instruction: Instruction!
init() {
instruction = .group(Group(groupTitle: "A Group struct"))
}
var groupBinding: Binding<Group> {
return Binding<Group>(get: {
if case .group(let g) = self.instruction {
return g
} else {
return Group(groupTitle: "")
}
}, set: {
self.instruction = .group($0)
})
}
}
关于swift - 如何使用绑定(bind)关联 Swift 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57562392/