All Versions
11
Latest Version
Avg Release Cycle
77 days
Latest Release
327 days ago

Changelog History
Page 1

  • v2.3.0

    November 06, 2019
    • ๐Ÿ‘‰ Make /foo/bar have higher priority than /foo/<id> (#120, @Paldom)
    • ๐Ÿ›  Fix a bug that pattern matches when the url contains another url (#126, @devxoul)
  • v2.2.0

    April 02, 2019
    • โž• Add Swift 5 support ๐Ÿš€ (#118, @alihen)
    • ๐Ÿ‘‰ Use key window when pushing or presenting a view controller (#110, @aemoe)
    • ๐Ÿ›  Fix a bug that URLMatcher.match() incorrectly matches <path:_> (#117, @RolandasRazma)
  • v2.1.0

    September 26, 2018
    • โž• Add Swift 4.2 support ๐ŸŽ‰ (#108)
  • v2.0.6

    June 10, 2018
    • ๐Ÿ‘Œ Support Xcode 9.4 and Swift 4.1.2
    • โœ‚ Removes weak keyword from the property definition in the protocol to remove compiler warning (6e7cfce)
  • v2.0.5

    April 27, 2018
    • ๐Ÿ›  Fix a bug that queryParameters cannot parse a query parameter that contains an url (#99)
  • v2.0.4

    December 01, 2017
    • Separate missing protocol requirement methods (3f6f735)
  • v2.0.3

    November 30, 2017
    • Separate protocol requirement methods (#87)
  • v2.0.2

    November 07, 2017
    • ๐Ÿ›  Fix a crash from an UIApplication (6dad23e)
    • ๐Ÿ‘‰ Use count on a String directly (6a148b7)
  • v2.0.1

    November 06, 2017
    • Consider an app extension environment (#82)
    • ๐Ÿ‘Œ Supports Xcode 9.1 (Carthage)
  • v2.0.0

    October 19, 2017

    ๐Ÿ‘Œ Improvements

    • โž• Add NavigatorType protocol. Use this protocol to inject a dependency of Navigator.
    • โž• Add NavigatorDelegate protocol. Use this protocol to decide whether to push or present or not.

    Migration Guide

    Accessing an instance: A singleton instance named Navigator is removed and URLNavigator is renamed to Navigator. You have to create your own instance.

    - Navigator.foo()+ let navigator = Navigator()+ navigator.foo()
    

    Mapping view controllers : Use register() to map view controllers. It takes a view controller factory instead of URLNavigable so that you can inject dependency to the view controller or create a view controller from Storyboard. Also, URLNavigable is removed.

    - Navigator.map("myapp://user/\<id\>", UserViewController.self)+ navigator.register("myapp://user/\<id\>") { (url: URLConvertible, values: [String: Any], context: Any?) -\> UIViewController? in+ let viewController = storyboard.instantiateViewController(withIdentifier: "foo")+ viewController.dependency = injectDependencyHere+ }
    

    Mapping url handlers : Use handler() to map url open handlers. URL open handlers now can take context as a third parameter.

    - Navigator.map("myapp://alert") { (url: URLConvertible, values: [String: Any]) -\> Bool in- return false- }+ navigator.handle("myapp://alert") { (url: URLConvertible, values: [String: Any], context: Any?) -\> Bool in+ return false+ }
    

    Presenting with a navigation controller : A type of the parameter wrap from present() is changed from Bool to UINavigationController.Type?. Pass nil if you don't want to wrap a view controller with a navigation controller and pass a class reference of UINavigationController or its subclass if you would like to wrap with a navigation controller.

    - Navigator.present("myapp://user/123", wrap: true)+ navigator.present("myapp://user/123", wrap: MyNavigationController.self)
    

    Custom URL value converters : URL value converters are now managed with a dictionary. Just set a value with custom value converter. Note that the handler parameters are changed from the single value to the entire path components and an index.

    - URLMatcher.default.addURLValueMatcherHandler(for: "foo") { (value: String) -\> Any? in- return value- }+ navigator.matcher.valueConverters["foo"] = { (pathComponents: [String], index: Int) -\> Any?+ return pathComponents[index]+ }