Swift Package Index


A protocol-oriented approach to the Coordinator app architecture pattern.


  • The latest stable release is 0.1.0. Released about 2 months ago.
  • The last commit to main was about 2 months ago.

Swift Version Compatibility

  • 0.1.0 and main
    5.3
    5.2
    5.1
    5.0
    4.2
Full build results

Platform Compatibility

  • 0.1.0 and main
    iOS
    macOS(Intel)
    macOS(ARM)
    Linux
    tvOS
    watchOS
Full build results

CoordinatorPlus

A protocol-oriented approach to the Coordinator app architecture pattern.

Installation

CoordinatorPlus is distributed using the Swift Package Manager. To install it into a project, add it as a dependency within your Package.swift manifest:

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/richardpiazza/CoordinatorPlus.git", from: "0.1.0")
    ],
    ...
)

Then import the CoordinatorPlus packages wherever you'd like to use it:

import CoordinatorPlus

Why the 'Protocol-Oriented' approach?

Many projects use this architecture pattern, and each have a slightly different implementation.

Implementing the architecture through protocols and protocol extensions allows for simple implementations with minimal need to customize the handling and presentation of Coordinators & View Controllers.

This reduces the differences on a project-by-project basis and improves the comprehension and understanding of all those who interact with the framework.

Features

The primary classes to note are:

  • AppCoordinator
  • Task
  • TaskCoordinator
  • TaskCoordinatorDelegate

All of the other files fall outside of what someone could consider a standard Coordinated MVC architectural pattern. The purpose of these files is to provide default/sample implementations for specific use cases when used on a UIKit platform. This implement is rather opinionated.

References

Heavily influenced by Josh Sullivan's article and example project BeyondViewControllers.