Как оптимизировать навигацию в проектах TabBar

Как вы, вероятно, испытали как разработчик - или просто как пользователь смартфона - большинство приложений в настоящее время создаются с помощью TabBars. Раньше приложения создавались с сегментами, что иногда приводило к гигантским стекам, а один и тот же ViewController, возможно, приходилось создавать дважды.
Надеюсь, Соруш Ханлоу дал нам ответ на эти массивные раскадровки: шаблон координатора.
Важно отметить, что мое руководство в первую очередь основано на шаблоне MVVM, который я не собираюсь объяснять в этой статье. Сам шаблон координатора позаботится только о навигации в приложении, создав экземпляры контроллеров представления, которые являются независимыми и теперь могут использоваться несколько раз один за другим.
Комбинация этих шаблонов дает потрясающий результат: шаблон MVVM-C.
А теперь приступим!
Делегат сцены
Делегат сцены уже включен в каждый проект Xcode. Его роль в этой ситуации остается за AppCoordinator.
Затем вы позвоните start().
Координатор приложений
Это точка входа координатора, который управляет всем приложением. Это довольно просто: вам просто нужно связать его с делегатом сцены, создать экземпляр TabCoordinator, также связать его с делегатом сцены и затем вызвать его функцию запуска.
Вкладка Координатор
Вот земля навигации. Координатор вкладок можно разделить на несколько частей:
Источник: экземпляр TabBarSource, это класс, отвечающий за перенос параметров, связанных с панелью вкладок. Поскольку мы говорим о программировании интерфейса, вам необходимо унаследовать протокол, который в своем расширении будет добавлять необработанное значение с именем relatively на каждую вкладку.

Затем вы делаете расширение (внизу) в координаторе вкладок, чтобы получить необработанное значение выбранной вкладки:

И, наконец, вызовите относительную функцию show() для создания экземпляра координатора стека:

Координаторы
У вас есть один координатор на стек. Затем он будет координировать поток всего стека, создавая экземпляры различных блоков MVVM с помощью экранов.

Экраны
Класс Screens включает только раскадровку.
Наконец, создайте расширения. Каждый должен включать одну функцию, отвечающую за создание экземпляра viewController с его относительными ViewModels и возможным репозиторием, делегатом и т. Д.

MVVM
Кроме того, вы найдете блоки MVVM относительно каждого представления. В этом руководстве это означает только ViewController и ViewModel.
Я не хочу углубляться в эту тему. Однако я могу только порекомендовать вам развить понимание и навыки этого шаблона.
Заключение
Надеюсь, я дал вам хорошее представление о шаблоне MVVM-C. Конечно, это руководство не будет очень полезным для тех, кто уже имеет продвинутые знания по этой теме. Однако, чтобы стать экспертом, всегда нужно с чего-то начинать, а упрощение часто означает ясность.
Вы также можете проверить репозиторий этого проекта по этому адресу.
Спасибо за чтение и удачи!