2025-01-25
用途:跨视图(View)传递变量并实时渲染
class Settings: ObservableObject{
@Published var counter: Int = 0
}
@EnvironmentObject var settings: Settings
Text("\(settings.counter)")
.font(.largeTitle)
#Preview {
CounterView().environmentObject(Settings())
}
import SwiftUI
@main
struct learnSwiftUIApp: App {
var body: some Scene {
WindowGroup {
CounterView().environmentObject(Settings())
}
}
}
import SwiftUI
class Settings: ObservableObject{
@Published var counter: Int = 0
}
struct CounterView: View {
@EnvironmentObject var settings: Settings
var body: some View {
VStack {
Text("\(settings.counter)")
.font(.largeTitle)
Button("Increment") {
settings.counter += 1
}
AnotherCounterView()
}.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
#Preview {
CounterView().environmentObject(Settings())
}