Latest 1.1.2
License MIT
Platforms ios 8.0, requires ARC
Authors ,


Build Status

Nabigeta provides simple API to declare routes for navigation. Compatible with trait environments.


Declare your routes into a file, like your AppDelegate.

import Nabigeta

class AppDelegate: UIResponder, UIApplicationDelegate {
  var navigation: Navigation! = nil

  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    self.navigation = Navigation(traitProvider: self.window!)

    self.navigation.router = { context in
        switch(context) {
          case is Author:
            return Route(AuthorViewController.self)

          case is Book:
            return Route(BookViewController.self)
              .present { trait in
                  switch(trait.horizontalClass, trait.verticalClass) {
                    case (.Compact, .Compact):
                      return PresentationPush()
                      return PresentationModal()

class AuthorViewController : UIViewController, Navigable {
    func didNavigate(to author: Author) {
      print("Navigated to /( controller")

class BookViewController {
  func didTapAuthor() {
    self.navigate(to: // AuthorViewController is displayed!

Advanced Usage


Nabigeta provides some default Presentation strategies:

  • PresentationPush
  • PresentationModal
  • PresentationPopover
  • PresentationSegue

If none of them feed your needs, you can provide your own custom presentation just by creating a class/struct implementing the PresentationStrategy protocol.

Stopping navigation

Navigate back

You can cancel navigation from source controller:

  bookViewController.navigateBack() // come back to BookViewController

You can also stop navigation from destination controller:

  authorViewController.navigationTerminated(status: .Canceled) // dismiss AuthorViewController

You can also be notified when navigations are stopped:

    .onTerminate { status in
      if status == .Canceled {
        print("author controller cancelled")

Latest podspec

    "name": "Magellan",
    "version": "1.1.2",
    "source": {
        "git": "",
        "tag": "1.1.2"
    "summary": "Define your navigation through routes in one and powerful way",
    "description": "Navigation Service to route your controllers based on parameters. Asbtract everything about NavigationController. No need to care about it!",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": [
    "platforms": {
        "ios": "8.0"
    "source_files": "Sources/Magellan/**/*.swift",
    "prefix_header_file": "Sources/Magellan.h",
    "requires_arc": true,
    "pushed_with_swift_version": "3.0"

Pin It on Pinterest

Share This