Skip to the content.

Навигация

Один из блоков вопросов на 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 .

Что делать? Использовать бэкпорт! Можете создать свой тестовый проект, чтобы поработать с этой библиотекой.

Мой сэмпл здесь.