|
//
// 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
}
}
|