Comments 5
А если хочется, чтобы за навигацию отвечала viewModel, а не View?
Так по сути Router
и является ViewModel. Там же пишем всю бизнес логику
RouterView - контейнер для вьюх, он нужен для того, чтобы один раз написать логику с прикидкой дестинейшенов и забыть, ну и Environment прокинуть, чтобы на каждую вручную не пихать самостоятельно
... то надо хорошо подумать. Вьюмодель не должна ничего знать о вьюшках, в том числе и о том, как, какие и в каком порядке менять. Иначе получаете обратную зависимость и невозможность переносить вашу логику, например, на часы или телевизор. Или даже на макбук, Windows-компьютер или Android. Роутинг зависит от вьюшек, поэтому он платформенно зависим и должен быть инкапсулирован на уровне представления, а не опущен ниже.
Отличный пример. На самом деле: ему можно сделать даунгрейд до iOS 14, если использовать пример расширения как в статье: https://www.avanderlee.com/swiftui/navigationlink-programmatically-binding/
Удобная навигация в SwiftUI для iOS 16 и выше