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

Как вы, вероятно, испытали как разработчик - или просто как пользователь смартфона - большинство приложений в настоящее время создаются с помощью TabBars. Раньше приложения создавались с сегментами, что иногда приводило к гигантским стекам, а один и тот же ViewController, возможно, приходилось создавать дважды.

Надеюсь, Соруш Ханлоу дал нам ответ на эти массивные раскадровки: шаблон координатора.

Важно отметить, что мое руководство в первую очередь основано на шаблоне MVVM, который я не собираюсь объяснять в этой статье. Сам шаблон координатора позаботится только о навигации в приложении, создав экземпляры контроллеров представления, которые являются независимыми и теперь могут использоваться несколько раз один за другим.

Комбинация этих шаблонов дает потрясающий результат: шаблон MVVM-C.

А теперь приступим!

Делегат сцены

Делегат сцены уже включен в каждый проект Xcode. Его роль в этой ситуации остается за AppCoordinator.

Затем вы позвоните start().

Координатор приложений

Это точка входа координатора, который управляет всем приложением. Это довольно просто: вам просто нужно связать его с делегатом сцены, создать экземпляр TabCoordinator, также связать его с делегатом сцены и затем вызвать его функцию запуска.

Вкладка Координатор

Вот земля навигации. Координатор вкладок можно разделить на несколько частей:

Источник: экземпляр TabBarSource, это класс, отвечающий за перенос параметров, связанных с панелью вкладок. Поскольку мы говорим о программировании интерфейса, вам необходимо унаследовать протокол, который в своем расширении будет добавлять необработанное значение с именем relatively на каждую вкладку.

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

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

Координаторы

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

Экраны

Класс Screens включает только раскадровку.

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

MVVM

Кроме того, вы найдете блоки MVVM относительно каждого представления. В этом руководстве это означает только ViewController и ViewModel.

Я не хочу углубляться в эту тему. Однако я могу только порекомендовать вам развить понимание и навыки этого шаблона.

Заключение

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

Вы также можете проверить репозиторий этого проекта по этому адресу.

Спасибо за чтение и удачи!