RoutableWithConfiguration
public protocol RoutableWithConfiguration : Routable
A RoutableWithConfiguration is a ViewController
that takes active part to the execution of a navigation action.
If a screen listScreen
needs to present addItemScreen
, the ViewController that is handling listScreen
must
conform to the RoutableWithConfiguration
protocol.
When a Show("addItemScreen")
action is dispatched, the Navigator
will capture the action and will start
finding a RoutableWithConfiguration in the active hierarchy that can handle the action.
If the navigationConfiguration
of listScreen
will match the NavigationRequest
of .show(addItemScreen)
than the Navigator will execute the relative NavigationInstruction
where you can
configure the ViewController to present.
There are others NavigationRequest
s and NavigationInstruction
s that can be used to define the navigation
structure of the app.
In case you need more control, you can always implement the Routable
protocol yourself and have
fine grained control of the implementation of the navigation.
In fact, a RoutableWithConfiguration
and its navigationConfiguration
are used behind the scenes
to implement the Routable
protocol for you.
extension ListViewController: RoutableWithConfiguration {
// needed by the `Routable` protocol
// to identify this ViewController in the hierarchy
var routeIdentifier: RouteElementIdentifier {
return "listScreen"
}
// the `NavigationRequest`s that this ViewController is handling
// with the `NavigationInstruction` to execute
var navigationConfiguration: [NavigationRequest: NavigationInstruction] {
return [
.show("addItemScreen"): .presentModally({ [unowned self] _ in
let vc = AddItemViewController(store: self.store)
return vc
})
]
}
-
The
NavigationRequest
s this RoutableWithConfiguration will handle and theNavigationInstruction
s that will be executed by theNavigator
.Declaration
Swift
var navigationConfiguration: [NavigationRequest : NavigationInstruction] { get }
-
show(identifier:
Extension methodfrom: animated: context: completion: ) Method of the
Routable
protocol that theRoutableWithConfiguration
is implementing automatically looking at thenavigationConfiguration
.Declaration
Swift
public func show( identifier: RouteElementIdentifier, from: RouteElementIdentifier, animated: Bool, context: Any?, completion: @escaping RoutingCompletion ) -> Bool
-
hide(identifier:
Extension methodfrom: animated: context: completion: ) Method of the
Routable
protocol that theRoutableWithConfiguration
is implementing automatically looking at thenavigationConfiguration
.Declaration
Swift
public func hide( identifier: RouteElementIdentifier, from: RouteElementIdentifier, animated: Bool, context: Any?, completion: @escaping RoutingCompletion ) -> Bool