Нет описания

AppCoordinator.swift 3.5KB

    // // 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" } var shareUserInfoViewModel = UserInfoViewModel() var containerViewController: ContainerViewController fileprivate var coordinators = [CoordinatorKey: Coordinator]() public init(_ containerVC: ContainerViewController) { containerViewController = containerVC containerViewController.delegate = self containerViewController.userInfo = shareUserInfoViewModel self.containerViewController.loadViewIfNeeded() let homeVC = makeHomeViewController() let messageVC = makeMessageViewController() containerViewController.pageItems = [PageItem(title: "首页", viewController: homeVC), PageItem(title: "消息", viewController: messageVC)] let homeCoordinator = HomeCoordinator(homeVC, userInfoViewModel: shareUserInfoViewModel) let messageCoordinator = MessageCoordinator(messageVC, userInfoViewModel: shareUserInfoViewModel) coordinators[.home] = homeCoordinator coordinators[.message] = messageCoordinator } func start() { } } extension AppCoordinator: ContainerViewControllerDelegate { func presentLogin() { let loginVC = makeLoginViewController() containerViewController.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, containerViewController: containerViewController) 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 } }