Ответ
Нет, это неверно. В архитектуре Clean Swift (VIP-цикл) за навигацию и роутинг отвечает отдельный компонент — Router.
Распределение ответственности:
- Interactor: Содержит бизнес-логику. Получает запросы от ViewController, работает с данными (через Workers) и передает сырые результаты Presenter'у.
- Router: Получает команды на переход от ViewController'а и выполняет навигацию между модулями (экранами).
Пример корректного потока:
// 1. ViewController (реагирует на действие пользователя)
func didSelectRow(at indexPath: IndexPath) {
router?.routeToDetails(for: data[indexPath.row])
}
// 2. Router (выполняет переход)
func routeToDetails(for item: DataItem) {
let nextVC = DetailsConfigurator.configure(with: item)
viewController?.navigationController?.pushViewController(nextVC, animated: true)
}
// 3. Interactor (не участвует в роутинге)
// Его задача — подготовить данные для текущего экрана.
Откуда путаница? Интерактор может передавать данные (например, идентификатор объекта) для следующего экрана, но сам переход всегда инициирует и выполняет Router. Смешивание этих обязанностей нарушает принцип единой ответственности (SRP).