Structure

WKExtensionDelegateAdaptor

A property wrapper type that you use to create a WatchKit extension delegate.

Declaration 宣言

@propertyWrapper struct WKExtensionDelegateAdaptor<DelegateType> where DelegateType : NSObject, DelegateType : WKExtensionDelegate

Overview 概要

To handle extension delegate callbacks in an extension that uses the SwiftUI life cycle, define a type that conforms to the WKExtensionDelegate protocol, and implement the delegate methods that you need. For example, you can implement the didRegisterForRemoteNotifications(withDeviceToken:) method to handle remote notification registration:


class MyExtensionDelegate: NSObject, WKExtensionDelegate, ObservableObject {
    func didRegisterForRemoteNotifications(withDeviceToken: Data) {
        // Record the device token.
    }
}

Then use the WKExtensionDelegateAdaptor property wrapper inside your App declaration to tell SwiftUI about the delegate type:


@main
struct MyApp: App {
    @WKExtensionDelegateAdaptor private var extensionDelegate: MyExtensionDelegate


    var body: some Scene { ... }
}

SwiftUI instantiates the delegate and calls the delegate’s methods in response to life cycle events. Define the delegate adaptor only in your App declaration, and only once for a given extension. If you declare it more than once, SwiftUI generates a runtime error.

If your extension delegate conforms to the ObservableObject protocol, as in the example above, then SwiftUI puts the delegate it creates into the Environment. You can access the delegate from any scene or view in your extension using the EnvironmentObject property wrapper:


@EnvironmentObject private var extensionDelegate: MyExtensionDelegate

This enables you to use the dollar sign ($) prefix to get a binding to published properties that you declare in the delegate. For more information, see projectedValue.

Topics 話題

Creating a Delegate Adaptor

Getting the Delegate Adaptor

Default Implementations 省略時実装

Relationships 関係

Conforms To 次に準拠

See Also 参照

App Delegates in SwiftUI