|
//
// Coordinator.swift
// PaiAi
//
// Created by ffib on 2018/12/6.
// Copyright © 2018 yb. All rights reserved.
//
import Foundation
protocol Coordinator {
}
final class AppCoordinator {
fileprivate enum CoordinatorKey: String {
case home = "home"
case message = "message"
case mine = "mine"
}
fileprivate var coordinators = [CoordinatorKey: Coordinator]()
var containerViewController: ContainerViewController
init(_ containerVC: ContainerViewController) {
self.containerViewController = containerVC
self.containerViewController.delegate = self
self.containerViewController.loadViewIfNeeded()
let homeVC = UIStoryboard.mainBoard.instantiateHomeViewController()
let messageVC = UIStoryboard.messageBoard.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.mineBoard.instantiateMineViewController()
let mineCoordinator = MineCoordinator(mineVC)
guard let navView = containerViewController.navigationController?.view else { return }
mineVC.view.frame = navView.bounds
containerViewController.navigationController?.addChildViewController(mineVC)
navView.addSubview(mineVC.view)
coordinators[.mine] = mineCoordinator
}
func start() {
}
}
extension AppCoordinator: ContainerViewControllerDelegate {
func showMineMenu() {
configurationMineCoordinator()
}
}
extension UIStoryboard {
fileprivate func instantiateHomeViewController() -> HomeViewController {
let homeVC = instantiateController(HomeViewController.self)
return homeVC
}
fileprivate func instantiateMessageTypeViewController() -> MessageTypeViewController {
let messageTypeVC = instantiateController(MessageTypeViewController.self)
return messageTypeVC
}
fileprivate func instantiateMineViewController() -> MineViewController {
let mineVC = instantiateController(MineViewController.self)
return mineVC
}
}
|