Keine Beschreibung

MineCoordinator.swift 3.7KB

    // // MineCoordinator.swift // Paiai_iOS // // Created by FFIB on 2018/12/6. // Copyright © 2018 FFIB. All rights reserved. // import UIKit import RxSwift import PaiaiUIKit import PaiaiDataKit class MineCoordinator: BaseCoordinator<Void> { let mineViewController: MineViewController init(_ viewController: MineViewController, navigationController: UINavigationController) { self.mineViewController = viewController super.init(navigationController: navigationController, viewController: viewController) } override func start() -> Observable<Void> { mineViewController.delegate = self return didCancel } } extension MineCoordinator: MineViewControllerDelegate { func logout() { mineViewController.dismissController() didCancel.onNext(()) guard let coordinator = parentCoordinator as? AppCoordinator else { return } let vc = coordinator.makeLoginViewController() let loginCoordinator = LoginCoordinator(vc) coordinator.coordinate(to: loginCoordinator).subscribe { _ in vc.dismissController() }.disposed(by: disposeBag) navigationController.presentController(vc) } func didSelect(_ item: MineItem) { mineViewController.dismissController() deallocatedDispose.dispose() let vc: UIViewController switch item { case .group: vc = makeMineGroupViewController() case .order: vc = makeMineOrderViewController() case .feedback: vc = makeMineFeedbackViewController() case .about: vc = makeMineAboutViewController() } vc.rx.deallocating.subscribe(onNext: { _ in self.didCancel.onNext(()) }).disposed(by: disposeBag) } } extension MineCoordinator: MineGroupViewModelDelegate { func didSelect(_ item: GroupItem) { let coordinator = GroupCoordinator(makeGroupViewController(item: item), navigationController: navigationController, navigationSource: .mineGroup) coordinate(to: coordinator).subscribe().disposed(by: disposeBag) navigationController.pushViewController(coordinator.groupViewController) } } fileprivate extension MineCoordinator { func makeMineGroupViewController() -> MineGroupViewController { let vc = MineGroupViewController.instantiate() vc.viewModel = MineGroupViewModel() vc.viewModel.delegate = self navigationController.pushViewController(vc) return vc } func makeMineOrderViewController() -> MineOrderViewController { let vc = MineOrderViewController.instantiate() vc.viewModel = MineOrderViewModel() navigationController.pushViewController(vc) return vc } func makeMineFeedbackViewController() -> MineFeedbackViewController { let vc = MineFeedbackViewController.instantiate() vc.feedbackAPI = FeedbackRemoteAPI() navigationController.pushViewController(vc) return vc } func makeMineAboutViewController() -> MineAboutViewController { let vc = MineAboutViewController.instantiate() navigationController.pushViewController(vc, animated: true) print(navigationController) return vc } func makeGroupViewController(item: GroupItem) -> GroupViewController { let vc = GroupViewController.instantiate() vc.viewModel = GroupViewModel(groupItem: item) return vc } } extension UIStoryboard { static var mine: UIStoryboard { return UIStoryboard(name: "Mine", bundle: Bundle(identifier: "com.Paiai-iOS")) } }