EnvironmentObject, ApplicationData: アプリ内共通の変数
- 最初の構成 → 覚えてしまおう
XxxApp: App→ContentViewを呼んでいるContentView: View→ Viewレイアウトの定義
↓
- ApplicationData 追加版 → これも覚えてしまおう
ApplicationData: ObservableObject← ★ 新規@Publishedで Binding したい変数を定義
XxxApp: App@StateObject var appData = ApplicationData()ContentView().environmentObject(appData)
ContentView: View( またはそこから呼び出された 子 View )@EnvironmentObject var appData: ApplicationDataで参照- この変数は おおもとの
ContentViewのインスタンス化時にenvironmentObject(o)で渡される
- この変数は おおもとの
- コントロールへの Bindingには
$appData.prop1
ここで environmentObject() で足し忘れると、次のようなエラーが出る
SwiftUI/EnvironmentObject.swift:82: Fatal error: No ObservableObject of type ApplicationData found. A View.environmentObject(_:) for ApplicationData may be missing as an ancestor of this view.
- TODO: これの最小構成をサンプルとして載せる