ViewFlowable

@MainActor
public protocol ViewFlowable<PresentationConfiguration> : Flowable where Self.InterfaceCoordinator == DestinationSwiftUICoordinator, Self.PresentationConfiguration == DestinationPresentation<Self.DestinationType, Self.ContentType, Self.TabType>, Self.PresentationType == DestinationPresentationType<DestinationPresentation<Self.DestinationType, Self.ContentType, Self.TabType>>

This protocol represents a Flow which coordinates routing and navigation as a user moves through a SwiftUI-based app.

  • An enum which defines available Destination presentation types. Typically this is DestinationPresentationType.

    Declaration

    Swift

    typealias PresentationType = DestinationPresentationType<PresentationConfiguration>
  • A dictionary of Destination providers whose keys are an enum of Destination types. The Destination type represents the type of Destination each provider can provide.

    Declaration

    Swift

    @MainActor
    var destinationProviders: [DestinationType : any ViewDestinationProviding] { get set }
  • Provides a Destination based on the provided configuration model.

    Declaration

    Swift

    @MainActor
    func destination(for configuration: PresentationConfiguration) -> (any ViewDestinationable<PresentationConfiguration>)?

    Parameters

    configuration

    The presentation configuration model describing the Destination to return.

    Return Value

    The requested Destination, if one was found or able to be built.

  • buildDestination(for:) Default implementation

    Builds and returns a new Destination based on the supplied configuration model.

    Default Implementation

    Declaration

    Swift

    @MainActor
    func buildDestination(for configuration: PresentationConfiguration) -> (any ViewDestinationable<PresentationConfiguration>)?

    Parameters

    configuration

    A presentation configuration model to build the Destination.

    Return Value

    The created Destination, if one could be built.

  • Presents a Destination based on the supplied configuration model.

    Declaration

    Swift

    @discardableResult
    @MainActor
    func presentDestination(configuration: PresentationConfiguration) -> (any ViewDestinationable<PresentationConfiguration>)?

    Parameters

    configuration

    A presentation configuration model by which to find or build a Destination.

    Return Value

    The presented Destination, if one was found or created.

  • Updates a presentation configuration model.

    Default Implementation

    Declaration

    Swift

    @MainActor
    func updateDestinationConfiguration(configuration: inout PresentationConfiguration, destination: inout some ViewDestinationable<PresentationConfiguration>)

    Parameters

    configuration

    A presentation configuration model to update.

    destination

    A Destination to update.

  • Finds the closest navigator in the view hierarchy to the provided Destination.

    Default Implementation

    Declaration

    Swift

    @MainActor
    func findNavigatorInViewHierarchy(searchDestination: any ViewDestinationable) -> (any DestinationPathNavigating)?

    Parameters

    currentDestination

    The Destination to start searching at.

    Return Value

    Returns a navigator, if one was found.

  • Finds the closest Destination in the view hierarchy whose interface is a NavigationSplitView.

    Default Implementation

    Declaration

    Swift

    @MainActor
    func findSplitViewInViewHierarchy(currentDestination: any ViewDestinationable) -> (any NavigationSplitViewDestinationable<PresentationConfiguration>)?

    Parameters

    currentDestination

    The Destination to start searching at.

    Return Value

    Returns a Destination, if one was found.

  • Finds the closest Destination in the view hierarchy whose interface manages a TabBar.

    Default Implementation

    Declaration

    Swift

    @MainActor
    func findTabBarInViewHierarchy(searchDestination: any ViewDestinationable) -> (any TabBarViewDestinationable<PresentationConfiguration, TabType>)?

    Parameters

    currentDestination

    The Destination to start searching at.

    Return Value

    Returns a TabBar Destination, if found.

  • defaultTabBarPresentationClosure() Default implementation

    The default presentation closure run when a Destination is presented in the tab of a TabView.

    Default Implementation

    Declaration

    Swift

    @MainActor
    func defaultTabBarPresentationClosure() -> ((_ destination: any ViewDestinationable<PresentationConfiguration>, _ tabViewID: UUID) -> Void)

    Return Value

    A closure.

  • Declaration

    Swift

    @discardableResult
    @MainActor
    func presentNextDestinationInQueue() -> (any Destinationable<PresentationConfiguration>)?
  • Declaration

    Swift

    @MainActor
    func defaultSheetDismissalCompletionClosure(configuration: PresentationConfiguration) -> PresentationCompletionClosure?
  • Declaration

    Swift

    @MainActor
    func defaultNavigationBackCompletionClosure(configuration: PresentationConfiguration) -> PresentationCompletionClosure?
  • destinationView(for:) Extension method

    A ViewBuilder method that returns a strongly-typed View associated with the specified Destiantion.

    Declaration

    Swift

    @ViewBuilder
    @MainActor
    func destinationView(for destinationID: UUID) -> (some View)?

    Parameters

    destinationID

    The identifier of the Destination.

    Return Value

    A strongly-typed View associated with the specified Destination.

  • startingDestinationView() Extension method

    A ViewBuilder that returns a strongly-typed View associated with the Flow’s starting Destination.

    Declaration

    Swift

    @ViewBuilder
    @MainActor
    func startingDestinationView() -> (some View)?

    Return Value

    A strongly-typed View associated with the Flow’s starting Destination.