-
Notifications
You must be signed in to change notification settings - Fork 0
Chapter 6. Navigation.
Dmitriy Shulzhenko edited this page Sep 27, 2020
·
1 revision
Actually we can have so much different binders as we want.
For example we can separate navigation like this
import UIKit
import RxSwift
import RxCocoa
final class NavigationBinder<Prop, Transition, ViewController>: ViewControllerBinder
where Transition: Transitioning,
Transition.Prop == Prop,
ViewController: UIViewController,
ViewController: DisposeContainer {
unowned let viewController: ViewController
private let transition: Transition
private let driver: Driver<Prop>
init(viewController: ViewController,
transition: Transition,
driver: Driver<Prop>) {
self.viewController = viewController
self.transition = transition
self.driver = driver
bind()
}
func dispose() { }
func bindLoaded() {
driver
.drive(onNext: transition.perform)
.disposed(by: viewController.bag)
}
}extension NavigationBinder: StaticFactory {
...
static func pop(viewController: ViewController,
driver: Driver<Void>,
animated: Bool = true) -> NavigationPopBinder<ViewController> {
let transition = NavigationPopTransition(isAnimated: animated, viewController: viewController)
return NavigationPopBinder(viewController: viewController,
transition: transition,
driver: driver)
}
...
}