Я работаю над приложением, использующим шаблоны Coordinator
и MVVM
.
Протокол координатора выглядит следующим образом:
protocol Coordinator: class {
func start()
func start(with deeplink: DeeplinkOption?)
}
Метод start
имеетлогика запуска текущего потока координатора, например, создание соответствующего начального контроллера представления, модели представления и т. д.
Я пытался добавить обработку глубоких ссылок к протоколу Coordinator
с помощью метода start(with deeplink: DeeplinkOption?)
. Проблема заключается в том, что мне нужно передать данные глубоких ссылок в уже существующую модель представления в конкретном координаторе, и этот координатор не содержит ссылку на целевую модель представления. Например, представьте следующий стек:
appCoordinator
координатор чата
- экран чата
- экран сведений о пользователе
В данный момент пользователь находится на экране сведений о пользователе, и мне нужно передать действие deeplink модели представления экрана чата. Также нет причин заново создавать экран чата, как это делается в методе start
, поскольку экран чата уже находится в стеке навигации.
Есть ли удачное решение для этой проблемы (и координаторшаблон в целом) без сохранения ссылки на соответствующую модель представления?