Если вы хотите полностью удалить и заменить весь стек, просто запустите поток снова.
Установите новый контроллер навигации и AppCoordinator и назначьте контроллер навигации для window.rootViewController. Вызовите start в AppCoordinator точно так же, как при запуске, и у вас будет новый стек.
Вы можете добавить метод в свой AppCoordinator, чтобы обработать это для вас
class AppCoordinator: Coordinator, NSObject {
var navigationController: UINavigationController
init(navigationController: UINavigationController) {
self.navigationController = navigationController
}
func start() {
let vc = MainViewController()
navigationController.setViewControllers([vc], animated: true)
}
func resetNavigationStack() {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
navigationController = UINavigationController()
appDelegate.window = navigationController
start()
}
}