• Stars
    star
    715
  • Rank 61,117 (Top 2 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Implementation of Coordinators app design pattern.

platforms: iOS|tvOS SwiftPM ready Carthage compatible CocoaPods compatible

Coordinator

Implementation of Coordinator design pattern. It is the application architecture pattern for iOS, carefully designed to fit into UIKit; so much it could easily be UICoordinator.

Since this is core architectural pattern, it’s not possible to explain its usage with one or two clever lines of code. Give it a day or two; analyze and play around. I’m pretty sure you’ll find it worthy of your time and future projects.

Installation

Manually

My preferred method is to integrate Coordinator into the project manually. Just drag Coordinator folder into your project — it‘s only a handful of files.

If you prefer to use dependency managers, see below. Releases are tagged with Semantic Versioning in mind.

Swift Package Manager

Ready, just add this repo URL as Package. I recommend to link with master branch, not with specific version.

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Coordinator into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'Coordinator', 	:git => 'https://github.com/radianttap/Coordinator.git'

You must use direct link through :git since CocoaPods central repository contains a framework of the same name.1

Setting up with Carthage

Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate Coordinator into your Xcode project using Carthage, specify it in your Cartfile:

github "radianttap/Coordinator"

Documentation

The why and how and...

Further reading

On my blog: Coordinator: the missing pattern in UIKit

Rough history of development, also on my blog. I did not come up with the library all at once, it was a gradual process as all good things are.


Soroush Khanlou: Coordinators Redux

Andrey Panov: Coordinators Essential tutorial

Matthew Wyskiel: Protocol-Oriented App Coordinators in Swift

Coordinators are fairly old pattern but it was Soroush who brought them under iOS developer spotlight in 2015. My library follows the core idea but employs a different implementation.


Bill Dudney, WWDC 2014, session 224: Core iOS Application Architectural Patterns

Andy Matuschak & Colin Barrett, WWDC 2014, session 229: Advanced iOS Application Architecture and Patterns

I file these two talks under essential education for any iOS developer. While not directly associated with Coordinator pattern, you should still carefully watch and listen to understand what it means to “fit inside iOS SDK”.

License

MIT, as usual.

Give back

If you found this code useful, please consider buying me a coffee or two. ☕️😋

Footnotes

  1. That framework seems long abandoned and my requests to remove it and thus allow me to publish mine were unsuccessful.

More Repositories

1

CardPresentationController

Custom UIPresentationController which mimics the behavior of Apple Music UI
Swift
796
star
2

Swift-Essentials

A set of essential Swift stuff I use in every single iOS app.
Swift
233
star
3

WatchRingGenerator

iOS app to generate series of PNG images, to be used in WatchKit apps
Objective-C
148
star
4

Alley

Essential `URLSessionDataTask` micro-wrapper for communication with HTTP(S) web services, with built-in automatic request retries.
Swift
147
star
5

LanguageSwitcher

Example how to switch iOS app's language on-the-fly, instantly
Swift
89
star
6

Fields

Good, solid base to build custom forms in iOS apps, using self-sizing compositional layout.
Swift
80
star
7

HTML2PDFRenderer

Take any HTML loaded in WKWebView and make PDF out of it.
Swift
68
star
8

Avenue

Wrapper around URLSession and URLSessionTask to enable seamless integration with Operation / OperationQueue.
Swift
57
star
9

Ambar

Powerful, advanced Core Data Stack implementation, in Swift.
Swift
53
star
10

EFI-ASRock-X570-ITX-TB3

OpenCore EFI for build using ASRock X570 ITX board, Ryzen 9 5900X
45
star
11

RTFlyoutMenu

Fly-out (drop-down) menu component for iPad
Objective-C
41
star
12

EFI-B550I-Aorus

EFI for Gigabyte B550I Aorus Pro AX with 5900X and RX 6900 XT and with custom-replaced Wifi/Bt card.
23
star
13

EFI-ASRock-Z490-ITX-TB3

EFI for OpenCore bootloader, for Intel-based Hackintosh comparable to iMac (2020)
18
star
14

Coordinator-iOS13-starter-app

Template for iOS 13 app, with UIScenes and Coordinator pattern
Swift
16
star
15

RTCleanNavigationBar

UINavigationBar subclass that removes the shadow image while retaining translucency effect in iOS 7 and up
Objective-C
14
star
16

RTWalkthrough

An Objective-C clone of github/ariok/BWWalkthrough (a bit improved in the process)
Objective-C
12
star
17

Spotifier

Swift
12
star
18

NSFileManager-Utilities

Objective-C
10
star
19

UITableView-NSFetchedResultsController

UITV and NSFRC, sitting in a tree, forever happy
Objective-C
6
star
20

ryzentosh

Adventures in building hackintosh with OpenCore, running AMD Ryzen CPUs
5
star
21

RTFlowLayout

Like UICollectionViewFlowLayout, but with additional supplementary views.
Objective-C
5
star
22

ComposableUI

An example of the power of container controllers to UI driven by very complex functionality
Objective-C
4
star
23

RTCoreDataStack

Core Data stack for Objective-C apps
Objective-C
4
star
24

RTGraphLayout

UICollectionViewFlowLayout subclass acting like zoomable bar chart
Objective-C
3
star
25

UILabel-FontName

UIAppearance for UILabel font name
Objective-C
2
star
26

FirebaseTokenReporter

Utility to convert APNS token into FCM token
Swift
2
star
27

AsyncOperations

Jared Sinclair built this library a while back. Not sure why it's gone from his account, but hosting a copy until further notice.
Swift
2
star
28

RTTabBarController

Highly customizable and feature-rich replacement for UITabBarController
Objective-C
1
star
29

RTFormKit

Table View and self-sizing auto-layout based forms
Objective-C
1
star
30

EFI-Asus-ROG-Strix-B550-I

1
star
31

RTCollectionViewFlowLayout

Subclass of UICollectionViewFlowLayout, with two additional supplementary views
Objective-C
1
star