swift - 如何使用绑定(bind)关联 Swift 枚举?

标签 swift swiftui

我有一个接受绑定(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/

相关文章:

ios - 无法在 Collection View 中播放 mp4 视频

ios - 如何设置 UIImage 数组中的第二个或中间图像? ( swift 3)

swift - 随着时间的推移,重复的 SwiftUI 动画变得不稳定

Swiftui 渐变制作器 Spacer 无用

ios - 用于 SwiftUI 预览的 Xcode Canvas 未显示

iOS13 立即检查互联网连接

ios - UIImagePickerController 仅在 iPhone/iPad 应用程序中从横向相册中选择

ios - 对于列表详细信息界面 - 数据在详细信息 View 中更新,数据发生更改但不会立即反射(reflect)在详细信息 View 中

SWIFTUI 和 Core Motion

swift - 在 Swift 中实现拉动刷新时 TableView 标题卡住