Как указать представлениям SwiftUI привязываться к вложенным наблюдаемым объектамIOS

Программируем под IOS
Anonymous
Как указать представлениям SwiftUI привязываться к вложенным наблюдаемым объектам

Сообщение Anonymous »

У меня есть представление SwiftUI, которое принимает объект EnvironmentObject с именем appModel. Затем он считывает значение appModel.submodel.count в своем теле метода. Я ожидаю, что это привяжет мое представление к количеству свойств в подмодели, чтобы оно повторно отображалось при обновлении свойства, но, похоже, этого не происходит.

Это ошибка? А если нет, то каков идиоматический способ привязки представлений к вложенным свойствам объектов среды в SwiftUI?

В частности, моя модель выглядит так...

Код: Выделить всё

class Submodel: ObservableObject {
@Published var count = 0
}

class AppModel: ObservableObject {
@Published var submodel: Submodel = Submodel()
}
А мой взгляд выглядит так...

Код: Выделить всё

struct ContentView: View {
@EnvironmentObject var appModel: AppModel

var body: some View {
Text("Count: \(appModel.submodel.count)")
.onTapGesture {
self.appModel.submodel.count += 1
}
}
}
Когда я запускаю приложение и нажимаю на метку, свойство count увеличивается, но метка не обновляется.

Я могу исправить это, передав appModel.submodel как свойство ContentView, но я бы хотел по возможности избегать этого.

Подробнее здесь: https://stackoverflow.com/questions/584 ... bleobjects

Вернуться в «IOS»