//
// ContentView.swift
// Test
//
// Created by Toni Nichev on 1/3/24.
//
import SwiftUI
// Our observable object class
class GameSettings: ObservableObject {
@Published var scoree = 0
var test = 4
}
// A view that expects to find a GameSettings object
// in the environment, and shows its score.
struct ScoreView: View {
// 2: We are not instantiating gameSetting here since it's already done in ContentView.
@EnvironmentObject var gameSettings: GameSettings
var body: some View {
Text("Score: \(gameSettings.scoree)")
Text("Test: \(gameSettings.test)")
}
}
struct ContentView: View {
// 1: We instantiate GameSettings only here and pass it to the environmentObject at the end
@StateObject var gameSettings = GameSettings()
var body: some View {
NavigationStack {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Button("Increase score") {
gameSettings.scoree += 1
gameSettings.test += 1
}
NavigationLink {
ScoreView()
} label: {
Text("Show score")
}
}
}
.environmentObject(gameSettings)
}
}
#Preview {
ContentView()
}
#Preview {
ScoreView().environmentObject(GameSettings())
}
Related Articles