One Logo Pool Ball
SwiftUICore · IOS API REFERENCE

EnvironmentKey

protocol · iOS 13.0+ · SDK 27.1

protocol EnvironmentKey

A key for accessing values in the environment. You can create custom environment values by extending the ``EnvironmentValues`` structure with new properties. First declare a new environment key type and specify a value for the required ``defaultValue`` property: private struct MyEnvironmentKey: EnvironmentKey { static let defaultValue: String = "Default value" } The Swift compiler automatically infers the associated ``Value`` type as the type you specify for the default value. Then use the key to define a new environment value property: extension EnvironmentValues { var myCustomValue: String { get { self[MyEnvironmentKey.self] } set { self[MyEnvironmentKey.self] = newValue } } } Clients of your environment value never use the key directly. Instead, they use the key path of your custom environment value property. To set the environment value for a view and all its subviews, add the ``View/environment(_:_:)`` view modifier to that view: MyView() .environment(\.myCustomValue, "Another string") As a convenience, you can also define a dedicated view modifier to apply this environment value: extension View { func myCustomValue(_ myCustomValue: String) -> some View { environment(\.myCustomValue, myCustomValue) } } This improves clarity at the call site: MyView() .myCustomValue("Another string") To read the value from inside `MyView` or one of its descendants, use the ``Environment`` property wrapper: struct MyView: View { @Environment(\.myCustomValue) var customValue: String var body: some View { Text(customValue) // Displays "Another string". } }

Members (0)

This type has no directly callable members in this snapshot. See the framework’s skipped declarations for unsupported APIs.

Skipped declarations

No declarations were skipped in this snapshot.

All SwiftUICore types →