Changelog History
Page 1
-
v2.3.0 Changes
November 06, 2019 -
v2.2.0 Changes
April 02, 2019 -
v2.1.0 Changes
September 26, 2018- โ Add Swift 4.2 support ๐ (#108)
-
v2.0.6 Changes
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 Changes
April 27, 2018- ๐ Fix a bug that
queryParameters
cannot parse a query parameter that contains an url (#99)
- ๐ Fix a bug that
-
v2.0.4 Changes
December 01, 2017- Separate missing protocol requirement methods (3f6f735)
-
v2.0.3 Changes
November 30, 2017- Separate protocol requirement methods (#87)
-
v2.0.2 Changes
November 07, 2017 -
v2.0.1 Changes
November 06, 2017- Consider an app extension environment (#82)
- ๐ Supports Xcode 9.1 (Carthage)
-
v2.0.0 Changes
October 19, 2017๐ Improvements
- โ Add
NavigatorType
protocol. Use this protocol to inject a dependency ofNavigator
. - โ 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 andURLNavigator
is renamed toNavigator
. 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 ofURLNavigable
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 takecontext
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
frompresent()
is changed fromBool
toUINavigationController.Type?
. Passnil
if you don't want to wrap a view controller with a navigation controller and pass a class reference ofUINavigationController
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]+ }
- โ Add