Skip to main content

EnvironmentObject, ApplicationData: アプリ内共通の変数

  • 最初の構成 → 覚えてしまおう
    • XxxApp: AppContentView を呼んでいる
    • 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: これの最小構成をサンプルとして載せる