XCode 12.5 日本語化計画:Swift 記事: Inspecting View Layout
このビューが表示されるとき、または指定された値が変更されたときに実行するタスクを追加します。
func task<T>(id value: T, priority: TaskPriority = .userInitiated, _ action: @escaping () async -> Void) -> some View where T : Equatable
ビューが表示されるときに指定されたアクションを非同期で実行するビュー、または id 値が変更された状態でタスクを再開するビュー。
id
変化を観察する値。値は Equatable プロトコルに準拠していなければなりません。
priority
非同期タスクを作成するときに使用するタスクの優先度。デフォルトの優先度は userInitiated です。
action
ビューが表示されるときに SwiftUI が非同期タスクとして呼び出すクロージャ。アクションが完了する前にビューが消えた場合、SwiftUI はタスクを自動的にキャンセルします。id 値が変更すると、SwiftUI はタスクをキャンセルして再開します。
このメソッドは、指定された値が変更したときにタスクをキャンセルもして再作成することを除いて、task(priority:_:) のように動作します。変更を検出するために、修飾子は id パラメータの新しい値が前の値と等しいかどうかをテストします。これが機能するためには、値の型が Equatable プロトコルに準拠していなければなりません。
たとえば、その状態が変化するたびに(たとえば、サインアウト から サインイン に) カスタム通知を投稿する equatable Server 型を定義する場合、タスク修飾子を使用して、現在の状態を選択したサーバに反映するように Text ビューのコンテンツを更新できます:
Text(status ?? "Signed Out")
この例では、notifications(named:object:) メソッドを使用して、AsyncSequence インスタンスによって与えられた通知の非同期シーケンスを無期限に待機します。
他の場所では、サーバはカスタムの didUpdateStatus 通知を定義します。
extension NSNotification.Name {
}
サーバは、ユーザがサインインした後など、状況が変更するたびに、この型の通知を投稿します。
let notification = Notification(
NotificationCenter.default.post(notification)
Text ビューに添付されたタスクは、通知のユーザ情報辞書から状況値を取得して表示します。ユーザが別のサーバを選択すると、SwiftUI はタスクをキャンセルして新しいタスクを作成し、新しいサーバからの通知の待機を開始します。
func onAppear(perform: (() -> Void)?) -> some View
このビューが現れるときに実行すべきアクションを追加します。
func onDisappear(perform: (() -> Void)?) -> some View
このビューが消えるときに実行すべきアクションを追加します。
func onChange<V>(of: V, perform: (V) -> Void) -> some View
特定の値が変更したときにアクションを起動するこのビューの修飾子を追加します。
func task(priority: TaskPriority, () async -> Void) -> some View
このビューが現れたときに実行すべき非同期タスクを追加します。
ベータソフトウェア
この文書には、開発中の API または技術に関する予備情報が含まれています。この情報は変更される可能性があり、この 文章に従って実装されたソフトウェアは、最終的なオペレーティングシステムソフトウェアでテストする必要があります。
Apple のベータソフトウェアの使用についての詳細を学ぶ >