2.0.0
版本发布时间: 2017-10-19 13:40:05
devxoul/URLNavigator最新发布版本:2.5.1(2023-07-10 01:59:52)
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] + }
1、 URLNavigator.framework.zip 3.16MB