Я работаю над проектом iOS MVVM + Coordinator/RxSwift (не swiftUI).
В GroundViewController на экране есть несколько элементов, и пользователь может нажать на любой элемент, чтобы вызвать подробный вид этого элемента. Подробное представление появится после нажатия на элемент, а когда пользователь коснется другого элемента, подробное представление выскользнет, а затем снова появится с обновленной информацией. detailView имеет половину размера экрана, пользователь также может нажать на пустое место на GroundViewController, чтобы закрыть подробный вид (выдвижная анимация). (Таким образом, будет только один подробный вид)
Я решил сделать это подробное представление в виде UIView, у которого будет собственный координатор и ViewModel, и который будет добавлен в GroundViewControll.view. Но теперь я не понимаю, как общаться между ними или потоком событий.
Вопрос: В шаблоне MVVM/Координатор правильно ли сделать этот поток следующим образом:
groundViewController (receive a tap on the object) - >
groundViewModel - >
groundCoordinator (creat and pass itemID ) - >
detailedViewCoordinator (creat) - >
detailedViewModel and detialedView
И кто должен отвечать за анимацию скольжения в detialedView?
Итак, когда виден подробный вид, вы все еще можете видеть и взаимодействовать с элементами на виде сверху?
@ДэниелТ. Ты прав. Это одна из причин, по которой я выбираю UIView вместо UIViewController. Я только что обновил вопрос, чтобы сделать его более понятным.
Когда наземный вид получает касание, он сообщает об этом модели наземного вида.
Существуют некоторые различия в том, когда именно создаются и уничтожаются элементы, но приведенная выше общая идея.
И кто должен отвечать за анимацию скольжения /trigger detialedView?
Детальный координатор запускает его, контроллер представления выполняет его.
GroundCoordinator должен отвечать за отображение деталей и их отбрасывание. Вы должны передать маршрут координатора в detailView, который запускает другую деталь, но сначала закрывает текущую деталь.