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