Popularity
4.3
Growing
Activity
0.0
Stable
275
11
27

Code Quality Rank: L5
Programming language: Swift
License: MIT License
Tags: Utility    
Latest version: v3.0.0

SwiftRouter alternatives and similar libraries

Based on the "Utility" category.
Alternatively, view SwiftRouter alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of SwiftRouter or a related project?

Add another 'Utility' Library

README

SwiftRouter

License MIT Travis-CI Carthage compatible

A URL Router for iOS, written in Swift, inspired by HHRouter and JLRoutes.

Installation

SwiftRouter Version Swift Version Note
Before 1.0.7 2.0 n/a
1.0.7 2.2 n/a
2.0.0 3.0 n/a
2.1.0 3.0 Breaking changes by adopting exception
3.0.0 4.0 @objc should be used with properties

Carthage

SwiftRouter is compatible with Carthage. Add it to your Cartfile:

github "skyline75489/SwiftRouter"

CocoaPods

pod 'JLSwiftRouter'

use_frameworks!

Manually

Add SwiftRouter.swift in your project.

Usage

Routing ViewController

Define properties in your custom ViewController:

class UserViewController: UIViewController {
    @objc var userId:String?
    @objc var username:String?
    @objc var password:String?
}

Map URL to ViewController:

import SwiftRouter

let router = Router.shared
router.map("/user/:userId", controllerClass: UserViewController.self)

Get instance of ViewController directly from the URL. Parameters will be parsed automatically:

let vc = router.matchController("/user/1?username=hello&password=123")!
XCTAssertEqual(vc.userId, "1")
XCTAssertEqual(vc.username, "hello")
XCTAssertEqual(vc.password, "123")

This will load controller using init() method. If you want to load view controller from storyboard - use:

let vc = router.matchControllerFromStoryboard("/user/1?username=hello&password=123", 
                                              storyboardName: "MyStoryboard")!

This code will load controller from storyboard named MyStoryboard.storyboard. Just don't forget to set that controller identifier in storyboard to its class name. In this case UserViewController.

Push custom ViewController:

router.routeURL("/user/123", navigationController: self.navigationController!)
// The custom ViewController will be pushed with parameters.

Routing handler

Define your custom handler function and map it to URL:

router.map("/user/add", handler: { (params:[String: String]?) -> (Bool) in
    XCTAssertNotNil(params)
    if let params = params {
        XCTAssertEqual(params["username"], "hello")
        XCTAssertEqual(params["password"], "123")
    }
    return true
})

Call the handler from router:

router.routeURL("/user/add?username=hello&password=123") 
// The handler function will be called with parameters.

License

MIT License


*Note that all licence references and agreements mentioned in the SwiftRouter README section above are relevant to that project's source code only.