Минимизируйте перестройку приложений

В этом руководстве мы узнаем, как легко отлаживать наш UIViewControllers без многократного запуска нашего приложения. Мы будем использовать превью SwiftUI, чтобы это стало возможным. Мы также создадим удобное расширение, которое вы сможете скопировать и вставить в свои приложения, чтобы обеспечить мгновенную поддержку предварительного просмотра SwiftUI для любого контроллера представления.

Даже если минимальная версия iOS вашего проекта ниже 13.0, вы все равно сможете использовать этот трюк, и это сэкономит вам много времени.

Исходный код демонстрационного проекта доступен внизу статьи.

Давайте начнем

Начнем с определения этого расширения на UIViewController:

  1. Мы делаем расширение доступным для потребителей с iOS 13 и выше.
  2. Частная структура Preview соответствует протоколу UIViewControllerRepresentable. Мы будем использовать его для создания предварительного просмотра для наших контроллеров представления.
  3. Структура зависит от UIViewController. Например, если нам нужен предварительный просмотр для SettingsViewController, мы предоставим его структуре Preview.
  4. Методы makeUIViewController(context:) и updateUIViewController(_ uiviewController:context:) требуются протоколом UIViewControllerRepresentable. Внутри метода makeUIViewController мы возвращаем контроллер представления, который хотим получить для предварительного просмотра. Последний метод остается пустым.
  5. Мы создаем удобное свойство preview, которое возвращает Preview для контроллера представления.

Это все, что нам нужно, чтобы добавить поддержку предварительного просмотра любого UIViewController в наших приложениях. Давайте проверим то, что мы создали.

Пример использования

У нас есть простой экран, на котором пользователи выбираются и отображаются в виде UITableView:

Наша модель User очень проста, и у нас есть свойство mockUsers для получения массива образцов пользователей:

Код контроллера представления также очень прост:

Как мы видим, внутри viewDidLoad() мы имитируем сетевой запрос, который возвращает массив пользователей и перезагружает представление таблицы:

Чтобы создать предварительный просмотр для UsersViewController, все, что нам нужно, это определить структуру, которая соответствует протоколу PreviewProvider и возвращает Preview, который мы создали в начале этого руководства:

Наконец, мы можем увидеть предварительный просмотр нашего контроллера представления прямо в Xcode:

Мы успешно добавили поддержку UIViewController превью и протестировали их на простом примере.

Ресурсы

Исходный код демонстрационного проекта доступен на GitHub.

Заключение

Чтобы узнать больше о предварительных версиях SwiftUI, ознакомьтесь с этой статьей Мануэля Шульце.

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