Я постараюсь объяснить в общем.У нас есть @State
, @ObjectBinding
, @EnvironmentObject
и @Binding
.
@State
- объявляется свойство локального значения.Apple рекомендует использовать их как можно меньше, поскольку свойство @State
следует использовать только внутри представления и отвечать за мелкие элементы пользовательского интерфейса. @ObjectBinding
- свойство внешней ссылки.На самом деле это ваша модель данных, которая должна отображаться. @EnvironmentObject
- то же самое, что и @ObjectBinding, но она используется во всей среде для других представлений, в то время как @ObjectBinding должна передаваться явно @Binding
- определяет, что свойство не является источником истины и является только ссылкой на реальный источник истины (@State, @ObjectBinding, @EnvironmentObject
).Передав одно из свойств из 1-3 точек в представление вида, необходимо объявить свойство в дочернем представлении как @Binding
, чтобы создать ссылку, и передать свойство со знаком $
, например MessageDetails(message: $message)
. Для получения дополнительной информации рекомендуем посмотреть Поток данных через SwiftUI
UPD: Решено добавить некоторые важные из сессии.Вы можете @ObjectBinding
и @Binding
для всех видов, но в этом случае вам нужно будет проходить модель по всем видам глубже, если она нужна для глубокого обзора.@EnvironmentObject
и @Environment
позволяет вам передать его конкретному представлению в вашей иерархии.В настоящий момент я не нашел реальных примеров от Apple, поэтому проверяю их сеансы