Я работаю над проектом, используя шаблон 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.