Няма описание

HomeCoordinator.swift 4.6KB

    // // HomeCoordinator.swift // PaiAi // // Created by ffib on 2018/12/6. // Copyright © 2018 yb. All rights reserved. // import Foundation import PaiaiDataKit import PaiaiUIKit class HomeCoordinator: Coordinator { fileprivate var coordinators = [CoordinatorKey: Coordinator]() var homeViewController: HomeViewController var navigationController: UINavigationController var shareUserInfoViewModel: UserInfoViewModel init(_ homeVC: HomeViewController, navigationController: UINavigationController, userInfoViewModel: UserInfoViewModel) { homeViewController = homeVC self.navigationController = navigationController shareUserInfoViewModel = userInfoViewModel homeViewController.viewModel.delegate = self } func start() { } } extension HomeCoordinator: HomeViewModelDelegate { func didSelect(_ items: [PhotoItem], currIndex: Int) { let ctl = UIStoryboard.photoDetail.instantiateController(PhotoDetailViewController.self) let coordinator = PhotoDetailCoordinator(ctl, nav: navigationController, viewModel: PhotoDetailViewModel(item: items[currIndex]), listViewModel: PhotoDetailListViewModel(items: items, currIndex: currIndex)) coordinators[.photoDetail] = coordinator coordinator.start() navigationController.pushViewController(coordinator.photoDetailViewController) } func createGroup() { let ctl = UIStoryboard.main.instantiateCreateGroupViewController() ctl.delegate = self homeViewController.presentController(ctl) } func scanQR() { let ctl = UIStoryboard.main.instantiateScanQRViewController() ctl.viewModel.delegate = self navigationController.pushViewController(ctl) } } extension HomeCoordinator: CreateGroupViewControllerDelegate { func didSelect(_ item: GroupItem) { let ctl = UIStoryboard.group.instantiateController(GroupViewController.self) ctl.viewModel = GroupViewModel(groupItem: item) let coordinator = GroupCoordinator(ctl, navigationController: navigationController) coordinators[.group] = coordinator navigationController.pushViewController(ctl) } func navigateToCreateGroupConfirm() { let ctl = UIStoryboard.main.instantiateCreateGroupConfirmViewController() ctl.viewModel = CreateGroupViewModel(userInfoViewModel: shareUserInfoViewModel) ctl.viewModel.delegate = self homeViewController.presentController(ctl) } } extension HomeCoordinator: CreateGroupViewModelDelegate { func navigateToGroup(_ item: GroupItem) { guard let vc = homeViewController.presentedViewController, vc.isMember(of: CreateGroupConfirmViewController.self) else { return } vc.dismissController() let ctl = UIStoryboard.group.instantiateController(GroupViewController.self) ctl.viewModel = GroupViewModel(groupItem: item) let coordinator = GroupCoordinator(ctl, navigationController: navigationController) coordinators[.group] = coordinator navigationController.pushViewController(ctl) } } extension HomeCoordinator: ScanQRViewModelDelegate { func navigateToGroupFromScanQR(_ item: GroupItem) { let ctl = UIStoryboard.group.instantiateController(GroupViewController.self) ctl.viewModel = GroupViewModel(groupItem: item) let coordinator = GroupCoordinator(ctl, navigationController: navigationController) coordinators[.group] = coordinator navigationController.pushViewController(ctl) } } extension UIStoryboard { fileprivate func instantiateCreateGroupViewController() -> CreateGroupViewController { let createGroupVC = instantiateController(CreateGroupViewController.self) return createGroupVC } fileprivate func instantiateCreateGroupConfirmViewController() -> CreateGroupConfirmViewController { let createGroupConfirmVC = instantiateController(CreateGroupConfirmViewController.self) return createGroupConfirmVC } fileprivate func instantiateScanQRViewController() -> ScanQRViewController { let scanQRVC = instantiateController(ScanQRViewController.self) return scanQRVC } } extension UIStoryboard { static var main: UIStoryboard { return UIStoryboard(name: "Main", bundle: Bundle(identifier: "com.Paiai-iOS")) } }