Nav apraksta

AppCoordinator.swift 4.0KB

    // // Coordinator.swift // Paiai_iOS // // Created by FFIB on 2018/12/6. // Copyright © 2018 FFIB. All rights reserved. // import UIKit import RxSwift import PaiaiUIKit import PaiaiDataKit let kScreenWidth = UIScreen.main.bounds.size.width let kScreenHeight = UIScreen.main.bounds.size.height public final class AppCoordinator: BaseCoordinator<Void> { private let window: UIWindow var shareUserInfoViewModel = UserInfoViewModel() var containerViewController: ContainerViewController public init(window: UIWindow) { self.window = window self.containerViewController = ContainerViewController() super.init(navigationController: NavigationController(rootViewController: containerViewController), viewController: containerViewController) } override public func start() -> Observable<Void> { makeContainerViewController() window.rootViewController = navigationController window.makeKeyAndVisible() return .never() } } extension AppCoordinator: ContainerViewControllerDelegate { func presentLogin() { let vc = makeLoginViewController() coordinate(to: LoginCoordinator(vc)) .subscribe(onNext: { _ in vc.removeFromParentAndView() }).disposed(by: disposeBag) navigationController.addFullScreen(childViewController: vc) } func presentMine() { let vc = makeMineViewController() let mineCoordinator = MineCoordinator(vc, navigationController: navigationController) coordinate(to: mineCoordinator).subscribe().disposed(by: disposeBag) containerViewController.presentController(mineCoordinator.mineViewController) } } extension AppCoordinator { func makeContainerViewController() { containerViewController.userInfo = shareUserInfoViewModel containerViewController.delegate = self containerViewController.loadViewIfNeeded() let homeVC = makeHomeViewController() let messageVC = makeMessageViewController() let homeCoordinator = HomeCoordinator(homeVC, navigationController: navigationController, containerViewController: containerViewController, userInfoViewModel: shareUserInfoViewModel) coordinate(to: homeCoordinator).subscribe().disposed(by: disposeBag) let messageCoordinator = MessageCoordinator(messageVC, navigationController: navigationController, containerViewController: containerViewController) coordinate(to: messageCoordinator).subscribe().disposed(by: disposeBag) containerViewController.pageItems = [PageItem(title: "首页", viewController: homeVC), PageItem(title: "消息", viewController: messageVC)] } func makeHomeViewController() -> HomeViewController { let vc = HomeViewController.instantiate() vc.viewModel = HomeViewModel() vc.userInfoViewModel = shareUserInfoViewModel return vc } func makeMessageViewController() -> MessageViewController { let vc = MessageViewController.instantiate() vc.viewModel = MessageViewModel() vc.userInfoViewModel = shareUserInfoViewModel return vc } } extension AppCoordinator { func makeMineViewController() -> MineViewController { let vc = MineViewController.instantiate() vc.userInfoViewModel = shareUserInfoViewModel return vc } func makeLoginViewController() -> LoginViewController { let vc = LoginViewController.instantiate() vc.userInfoViewModel = shareUserInfoViewModel return vc } }