Нет описания

AppCoordinator.swift 3.7KB

    // // Coordinator.swift // PaiAi // // Created by ffib on 2018/12/6. // Copyright © 2018 yb. All rights reserved. // import UIKit import PaiaiDataKit import PaiaiUIKit let kScreenWidth = UIScreen.main.bounds.size.width let kScreenHeight = UIScreen.main.bounds.size.height protocol Coordinator {} public final class AppCoordinator { var shareUserInfoViewModel = UserInfoViewModel() var containerViewController: ContainerViewController var navigationController: UINavigationController fileprivate var coordinators = [CoordinatorKey: Coordinator]() public init(_ containerVC: ContainerViewController, navigationController: UINavigationController) { self.containerViewController = containerVC self.navigationController = navigationController containerViewController.delegate = self containerViewController.userInfo = shareUserInfoViewModel containerViewController.loadViewIfNeeded() let homeVC = makeHomeViewController() let messageVC = makeMessageViewController() containerViewController.pageItems = [PageItem(title: "首页", viewController: homeVC), PageItem(title: "消息", viewController: messageVC)] let homeCoordinator = HomeCoordinator(homeVC, navigationController: navigationController, userInfoViewModel: shareUserInfoViewModel) let messageCoordinator = MessageCoordinator(messageVC, navigationController: navigationController, userInfoViewModel: shareUserInfoViewModel) coordinators[.home] = homeCoordinator coordinators[.message] = messageCoordinator } func start() { } } extension AppCoordinator: ContainerViewControllerDelegate { func presentLogin() { let loginVC = makeLoginViewController() navigationController.addFullScreen(childViewController: loginVC) } func presentMine() { let mineCoordinator = makeMineCoordinator() coordinators[.mine] = mineCoordinator containerViewController.presentController(mineCoordinator.mineViewController) } } fileprivate extension AppCoordinator { func makeMineCoordinator() -> MineCoordinator { let mineVC = makeMineViewController() mineVC.userInfoViewModel = shareUserInfoViewModel let mineCoordinator = MineCoordinator(mineVC, navigationController: navigationController) return mineCoordinator } } fileprivate extension AppCoordinator { func makeHomeViewController() -> HomeViewController { let vc = UIStoryboard.main.instantiateController(HomeViewController.self) vc.viewModel = HomeViewModel() vc.userInfoViewModel = shareUserInfoViewModel return vc } func makeMessageViewController() -> MessageViewController { let vc = UIStoryboard.message.instantiateController(MessageViewController.self) vc.viewModel = MessageViewModel() vc.userInfoViewModel = shareUserInfoViewModel return vc } func makeMineViewController() -> MineViewController { let vc = UIStoryboard.mine.instantiateController(MineViewController.self) return vc } func makeLoginViewController() -> LoginViewController { let vc = UIStoryboard.main.instantiateController(LoginViewController.self) vc.userInfoViewModel = shareUserInfoViewModel return vc } }