首页 > 解决方案 > SwiftUI 中可观察类中可选数据类型的选择器?

问题描述

对于 SwiftUI 中的可选数据类型,我有一个与 Picker 非常相似的问题?.

不同之处在于,我在 oberable 类中引用了一个可选项。

我的代码如下所示:

enum Flavor: String, CaseIterable, Identifiable {
    case chocolate
    case vanilla
    case strawberry

    var id: String { self.rawValue }
}
class cl1: ObservableObject {
    @Published var fl: Flavor?
}
struct ContentView: View {
    @State private var selectedFlavor: cl1 = cl1()
    var body: some View {

        Picker("Flavor", selection: $selectedFlavor.fl) {
            Text("Chocolate").tag(Flavor.chocolate as Flavor?)
            Text("Vanilla").tag(Flavor.vanilla as Flavor?)
            Text("Strawberry").tag(Flavor.strawberry as Flavor?)
        }

            .padding()
    }
}

即使我遵循了其他答案,但一旦我使用类对象,它就会失败。

我需要更改什么才能使其正常工作?

标签: swiftuiobservableoptionalpicker

解决方案


使用 时ObservableObject,您应该使用@StateObject属性包装器而不是@State- 这将允许您View监视@Published属性的更新ObservableObject

@StateObject private var selectedFlavor: cl1 = cl1()

推荐阅读