Код: Выделить всё
class A {
var p: Int = 1
func update() {
self.p = self.p + 1
}
}
@Observable
class BStore: A {
// nothing
}
Код: Выделить всё
struct ContentView: View {
@State private var bStore = BStore()
var body: some View {
CountView()
.environment(bStore)
}
}
struct CountView: View {
@Environment(BStore.self) private var bStore
var body: some View {
Text("count: \(bStore.p)")
.onTapGesture(perform: {
bStore.update()
})
}
}
Код: Выделить всё
bStore.pУ меня 2 вопроса:
- При текущем дизайне и классе A не используется @Observable, как правильно обновить представление? Если нет, то как его спроектировать? Предпосылка заключается в том, что класс A не может использовать @Observable, поскольку класс A не только обслуживает представление, класс @Observable BStore эквивалентен агенту класса A, обслуживающем только представления
- наследует класс A и имеет все его свойства и методы и использует @Observable, но почему свойства родительского класса bStore не отслеживаются на предмет изменений, в результате чего представление не изменяется?
Код: Выделить всё
bStore
Подробнее здесь: https://stackoverflow.com/questions/779 ... -to-update