【发布时间】:2020-04-03 05:00:05
【问题描述】:
目标:
我有一个模型是 ObservableObject。它有一个Bool 属性,我想用这个Bool 属性来初始化一个@Binding 变量。
问题:
- 如何将
@ObservableObject转换为@Binding? - 创建
@State是初始化@Binding的唯一方法吗?
注意:
- 我知道我可以使用
@ObservedObject/@EnvironmentObject,我看到它很有用,但我不确定一个简单的按钮是否需要访问整个模型。 - 还是我的理解有误?
代码:
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)
【问题讨论】: