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: これの最小構成をサンプルとして載せる