|
//
// 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"
}
fileprivate var coordinators = [CoordinatorKey: Coordinator]()
var containerViewController: ContainerViewController
public init(_ containerVC: ContainerViewController) {
self.containerViewController = containerVC
self.containerViewController.delegate = self
self.containerViewController.loadViewIfNeeded()
let homeVC = UIStoryboard.main.instantiateHomeViewController()
let messageVC = UIStoryboard.message.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.mine.instantiateMineViewController()
let mineCoordinator = MineCoordinator(mineVC)
guard let navView = containerViewController.navigationController?.view else { return }
mineVC.view.frame = navView.bounds
containerViewController.navigationController?.addChild(mineVC)
navView.addSubview(mineVC.view)
coordinators[.mine] = mineCoordinator
}
func start() {
}
}
extension AppCoordinator: ContainerViewControllerDelegate {
func showMineMenu() {
configurationMineCoordinator()
}
}
extension UIStoryboard {
fileprivate func instantiateHomeViewController() -> HomeViewController {
let ctl = instantiateController(HomeViewController.self)
ctl.viewModel = HomeViewModel<HomePhotoRepository>(respository: HomePhotoRepository())
return homeVC
}
fileprivate func instantiateMessageTypeViewController() -> MessageTypeViewController {
let messageTypeVC = instantiateController(MessageTypeViewController.self)
return messageTypeVC
}
fileprivate func instantiateMineViewController() -> MineViewController {
let mineVC = instantiateController(MineViewController.self)
return mineVC
}
}
|