Bot releases are visible (Hide)
Full Changelog: https://github.com/devxoul/URLNavigator/compare/2.5.0...2.5.1
Published by OhKanghoon over 1 year ago
Quick
, Nimble
dependencies by @OhKanghoon in https://github.com/devxoul/URLNavigator/pull/164
Full Changelog: https://github.com/devxoul/URLNavigator/compare/2.4.1...2.5.0
Published by OhKanghoon over 2 years ago
Full Changelog: https://github.com/devxoul/URLNavigator/compare/2.4.0...2.4.1
Published by OhKanghoon over 2 years ago
Full Changelog: https://github.com/devxoul/URLNavigator/compare/2.3.0...2.4.0
Published by devxoul over 5 years ago
URLMatcher.match()
incorrectly matches <path:_>
(#117, @RolandasRazma)NavigatorType
protocol. Use this protocol to inject a dependency of Navigator
.NavigatorDelegate
protocol. Use this protocol to decide whether to push or present or not.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]
+ }