Как указать представлениям 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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