swiftui - 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()
}
}
即使我遵循了其他答案,但一旦我使用类对象,它就会失败。
我需要更改什么才能使其正常工作?
解决方案
使用 时ObservableObject
,您应该使用@StateObject
属性包装器而不是@State
- 这将允许您View
监视@Published
属性的更新ObservableObject
@StateObject private var selectedFlavor: cl1 = cl1()
推荐阅读
- ruby-on-rails - 设计会话链接
- r - 对于每一行,找到与特定字符串匹配的单元格并返回列名的最后一个字符
- c++ - 在 std::unordered_map 中找到一个值
- javascript - 使用 nodemailer 的联系表格不起作用
- docker - Meteor 2.2 项目的 Dockerfile
- git - 如果工作副本中的特定文件夹与存储库相同,如何使用 git diff 返回 0,如果它们不同则返回 1
- linux - *nix 主机的 sssd.conf ldap_user_search_base 多个 ous
- python - 如果它通过一个或多个 if 语句,我如何执行相同的语句?
- python - Python将循环中的数据附加到数据框中
- amazon-web-services - AWS Pre-Signed Post URL 突然停止工作