No Description

AppCoordinator.swift 2.9KB

    // // Coordinator.swift // PaiAi // // Created by ffib on 2018/12/6. // Copyright © 2018 yb. All rights reserved. // import Foundation import PaiaiDataKit import PaiaiUIKit let kScreenWidth = UIScreen.main.bounds.size.width let kScreenHeight = UIScreen.main.bounds.size.height protocol Coordinator { } public final class AppCoordinator { fileprivate enum CoordinatorKey: String { case home = "home" case message = "message" case mine = "mine" } fileprivate var coordinators = [CoordinatorKey: Coordinator]() var containerViewController: ContainerViewController public init(_ containerVC: ContainerViewController) { self.containerViewController = containerVC self.containerViewController.delegate = self self.containerViewController.loadViewIfNeeded() let homeVC = UIStoryboard.main.instantiateHomeViewController() let messageVC = UIStoryboard.message.instantiateMessageTypeViewController() self.containerViewController.pageItems = [PageItem(title: "首页", viewController: homeVC), PageItem(title: "消息", viewController: messageVC)] let homeCoordinator = HomeCoordinator(homeVC) let messageCoordinator = MessageCoordinator(messageVC) coordinators[.home] = homeCoordinator coordinators[.message] = messageCoordinator } private func configurationMineCoordinator() { let mineVC = UIStoryboard.mine.instantiateMineViewController() let mineCoordinator = MineCoordinator(mineVC) guard let navView = containerViewController.navigationController?.view else { return } mineVC.view.frame = navView.bounds containerViewController.navigationController?.addChild(mineVC) navView.addSubview(mineVC.view) coordinators[.mine] = mineCoordinator } func start() { } } extension AppCoordinator: ContainerViewControllerDelegate { func showMineMenu() { configurationMineCoordinator() } } extension UIStoryboard { fileprivate func instantiateHomeViewController() -> HomeViewController { let ctl = instantiateController(HomeViewController.self) ctl.viewModel = HomeViewModel<HomePhotoRepository>(respository: HomePhotoRepository()) return homeVC } fileprivate func instantiateMessageTypeViewController() -> MessageTypeViewController { let messageTypeVC = instantiateController(MessageTypeViewController.self) return messageTypeVC } fileprivate func instantiateMineViewController() -> MineViewController { let mineVC = instantiateController(MineViewController.self) return mineVC } }