Цель:
У меня есть модель 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)