Aim:
我有一个型号是ObservableObject
.它有一个Bool
属性,我想用这个Bool
属性初始化一个@Binding
变量.
Questions:
- 如何将
@ObservableObject
转换为@Binding
? - 创建
@State
是初始化@Binding
的唯一方法吗?
Note:
- 我知道我可以使用
@ObservedObject
/@EnvironmentObject
,我认为它很有用,但我不确定一个简单的按钮是否需要访问整个模型. - 还是我的理解不正确?
Code:
import SwiftUI
import Combine
import SwiftUI
import PlaygroundSupport
class Car : ObservableObject {
@Published var isReadyForSale = true
}
struct SaleButton : View {
@Binding var isOn : Bool
var body: some View {
Button(action: {
self.isOn.toggle()
}) {
Text(isOn ? "On" : "Off")
}
}
}
let car = Car()
//How to convert an ObservableObject to a Binding
//Is creating an ObservedObject or EnvironmentObject the only way to handle a Observable Object ?
let button = SaleButton(isOn: car.isReadyForSale) //Throws a compilation error and rightly so, but how to pass it as a Binding variable ?
PlaygroundPage.current.setLiveView(button)