Координаторы, представляющие тот же UIViewController - PullRequest
0 голосов
/ 15 мая 2019

Я работаю над проектом, используя шаблон MVVM-Coordinator. У меня есть 2 экрана, ProductList и Product Detail. В деталях продукта у меня есть похожие продукты, когда выбран аналогичный продукт, я хочу представить экран Product Detail с новыми данными.

В ProductListCoordinator отображать сведения о продукте:

func navigateToProductDetail(productID: Int, api: APIClient) {
    let pDetailCoordinator = PDetailCoordinator(navigationController: navigationController)
    let pDetailViewModel = PDetailViewModel(dependencies: PDetailViewModel.Dependencies(productID: productID,
                                                                                              api: api,
                                                                                              coordinator: pDetailCoordinator))
    let pDetailViewController = UIStoryboard.pDetail.pDetailViewController
    pDetailViewController.viewModel = pDetailViewModel
    vodDetailViewController.modalPresentationStyle = .custom
    vodDetailViewController.modalTransitionStyle = .coverVertical
    self.navigationController.present(vodDetailViewController, animated: true, completion: nil)
}

В ProductDetailCoordinator отображаются похожие продукты:

func navigateToSimilarProductDetail(productID: Int, api: APIClient) {
    let pDetailCoordinator = PDetailCoordinator(navigationController: navigationController)
    let pDetailViewModel = PDetailViewModel(dependencies: PDetailViewModel.Dependencies(productID: productID,
                                                                                              api: api,
                                                                                              coordinator: pDetailCoordinator))
    let pDetailViewController = UIStoryboard.pDetail.pDetailViewController
    pDetailViewController.viewModel = pDetailViewModel
    vodDetailViewController.modalPresentationStyle = .custom
    vodDetailViewController.modalTransitionStyle = .coverVertical
    vodDetailViewController.modalPresentationStyle = .overCurrentContext

    let currentViewcontroller = self.navigationController.visibleViewController

    if currentViewcontroller is VodDetailViewController {
       currentViewcontroller!.present(vodDetailViewController, animated: true, completion: nil)
    }
}

Моя проблема в том, что ProductList представляет ProductDetail, ProductDetail представляет ProductDetail, но в третий раз я хочу представить новую страницу ProductDetail, которую я получаю:

Предупреждение: попытка представить на котором уже присутствует

А также, self.navigationController.popViewController(animated: true) не работает ни для одного из PDetailViewControllers.

...