【发布时间】:2020-05-26 18:57:04
【问题描述】:
我正在尝试观察 ObservableObject 中包含的 bool 值的变化,这是 enum 案例中的值。这是我试图实现的示例,但使用当前方法我收到错误Use of unresolved identifier '$type1Value'。
import SwiftUI
import Combine
class ObservableType1: ObservableObject {
@Published var isChecked: Bool = false
}
enum CustomEnum {
case option1(ObservableType1)
}
struct Parent: View {
var myCustomEnum: CustomEnum
var body: AnyView {
switch myCustomEnum {
case .option1(let type1Value):
AnyView(Child(isChecked: $type1Value.isChecked)) // <- error here
}
}
}
struct Child: View {
@Binding var isChecked: Bool
var body: AnyView {
AnyView(
Image(systemName: isChecked ? "checkmark.square" : "square")
.onTapGesture {
self.isChecked = !self.isChecked
})
}
}
我正在尝试从界面更新isChecked 的值,但由于我想要ObservableObject 包含enum 中的属性,例如CustomEnum 不知道该怎么做,或者如果它是甚至可能。我选择了一个枚举,因为会有多个具有不同ObservableObject 值的枚举选项,并且Parent 将根据CustomEnum 选项生成不同的子视图。如果它具有任何相关性,则Parent 将从Array 的CustomEnum 值中接收myCustomEnum 值。这甚至可能吗?如果没有,我有什么选择?谢谢!
【问题讨论】:
-
问题是您只能获得声明为
@ObservedObject的变量的$obj.prop语法——而不是ObservableObject。
标签: ios swift binding swiftui combine