Contents

withTransitionGroup(body:)

Coordinates multiple experience transitions to perform together as a single visual transition.

Declaration

@discardableResult nonisolated(nonsending) static func withTransitionGroup<ChildTransitionResult>(body: @_lifetime(0: copy 0) (inout AVExperienceController.TransitionGroup<ChildTransitionResult>) async -> Void) async -> [ChildTransitionResult] where ChildTransitionResult : Sendable

Parameters

  • body:

    A closure that adds transitions to the group using addTransition(operation:).

Return Value

An array of transition results in the order transitions were added.

Discussion

Use this method when you need to transition multiple AVExperienceController instances simultaneously, creating a smooth, coordinated animation.

All transitions prepare concurrently, then perform together once preparation completes. Individual transitions may succeed or fail independently — the group continues with successful transitions and collects results for all.

let results = await AVExperienceController.withTransitionGroup { group in
    for controller in controllers {
        group.addTransition {
            await controller.transition(to: .multiview)
        }
    }
}

// Check which transitions succeeded
for (index, result) in results.enumerated() {
    if case .reversed(let reason) = result {
        print("Controller \(index) failed: \(reason)")
    }
}

See Also

Transitioning experiences