Навигация
Один из блоков вопросов на iOS - собеседовании - архитектура приложений. При этом почти в любой архитектуре вопросы навигации всегда находятся сбоку от обсуждения. Более того, для навигации разрабатывают свои паттерны. Одними из таких являются координатор и навигатор.
Начиная с SwiftUI 1.0 Apple практически на каждом WWDC рассказывает про работу с MVVM, как будто забывая про роутинг.
Да, нам показали NavigationView
,
NavigationLink
,
но не покидало ощущение, что Apple опять представили что-то промежуточное.
Многие стали писать свои обертки над этим API, чтобы сделать работу удобнее.
И наконец в iOS 16 Apple представили новое API навигации, которое так долго ждали.
Вместо NavigationView
(deprecated)
теперь нужно использовать NavigationStack
.
Экран для перехода будет определять модификатор
navigationDestination(for:destination:)
.
Будем честны, многие команды до сих пор используют роутинг на UIKit в проектах на SwiftUI.
Даже те, кто пытались разобраться с NavigationView
, в конечном итоге возвращались обратно в UIKit.
С появлением нового API навигации такой подход - явно поворот не туда.
Но новое API требует минимальный таргет у проекта iOS 16.0 .
Что делать? Использовать бэкпорт! Можете создать свой тестовый проект, чтобы поработать с этой библиотекой.
Мой сэмпл здесь.