説明なし

AppCoordinator.swift 2.6KB

    // // Coordinator.swift // PaiAi // // Created by ffib on 2018/12/6. // Copyright © 2018 yb. All rights reserved. // import Foundation protocol Coordinator { } final class AppCoordinator { fileprivate enum CoordinatorKey: String { case home = "home" case message = "message" case mine = "mine" } fileprivate var coordinators = [CoordinatorKey: Coordinator]() var containerViewController: ContainerViewController init(_ containerVC: ContainerViewController) { self.containerViewController = containerVC self.containerViewController.delegate = self self.containerViewController.loadViewIfNeeded() let homeVC = UIStoryboard.mainBoard.instantiateHomeViewController() let messageVC = UIStoryboard.messageBoard.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.mineBoard.instantiateMineViewController() let mineCoordinator = MineCoordinator(mineVC) guard let navView = containerViewController.navigationController?.view else { return } mineVC.view.frame = navView.bounds containerViewController.navigationController?.addChildViewController(mineVC) navView.addSubview(mineVC.view) coordinators[.mine] = mineCoordinator } func start() { } } extension AppCoordinator: ContainerViewControllerDelegate { func showMineMenu() { configurationMineCoordinator() } } extension UIStoryboard { fileprivate func instantiateHomeViewController() -> HomeViewController { let homeVC = instantiateController(HomeViewController.self) return homeVC } fileprivate func instantiateMessageTypeViewController() -> MessageTypeViewController { let messageTypeVC = instantiateController(MessageTypeViewController.self) return messageTypeVC } fileprivate func instantiateMineViewController() -> MineViewController { let mineVC = instantiateController(MineViewController.self) return mineVC } }