Тут надо описать что такое и зачем вообще нужен этот самый координатор
class MyWindow: LirikaWindow.Container {
// это собственный класс UIWindow в который можно добавить свою логику
// ниже смотри как его использовать при инициализации координатора
}
enum AppRoute: Route {
case root
}
class AppCoordinator: WindowCoordinator<AppRoute> {
override func drive(route: AppRoute, completion: PresentationHandler?) {
switch route {
case .root:
let controller = UIViewController()
router.setRoot(controller: controller)
router.makeKeyAndVisible()
}
}
override func start() {
trigger(.root) // Вызываем нужный путь для создания транзишна
}
override func configureRootViewController() {
// Тут можно настроить окружение и контейнер, вызывается сразу после старта
router.container() // Так можно обратиться к контейнеру, в данном примере это UIWindow
}
override func deepLink(link: DeepLink) {
switch link {
case let item as? ConcreteDeepLink:
// выполняем переход через trigger(.action)
default:
break
}
}
}
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
private lazy var coordinator = AppCoordinator(container: LirikaWindow(container: MyWindow()))
func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
coordinator.start()
return true
}
}
- ControllerCoordinator -
UIViewController
- PageCoordinator -
UIPageViewController
- WindowCoordinator -
UIWindow
- NavigationCoordinator -
UINavigationController
- TabBarCoordinator -
UITabBarController
source 'https://github.com/alobanov/ALSpec.git'
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
platform :ios, '10.0'
target 'Proj' do
inhibit_all_warnings!
pod 'Lirika', :git => 'https://github.com/alobanov/Lirika.git', :branch => 'master'
end