Создайте приложение, подобное Lego, с помощью SwiftUI - Урок 9

1. Введение

Xcode предоставляет команду меню для Extract Subview из большего вида или сцены (что мы сделали в Урок 7). Но это извлеченное представление по-прежнему находится в том же файле, что и исходное супер-представление. Лучше всего разделить каждое представление в отдельный файл.

Нам нужно «реорганизовать» существующий код, «разделив проблемы» на отдельные файлы. «Рефакторинг» изменяет код под капотом без изменения функциональных возможностей приложения во время выполнения. Разделение проблем делает код пригодным для повторного использования и сопровождения и является фундаментальным принципом хорошей архитектуры. Это упрощает обслуживание, тестирование, предварительный просмотр и объединение различных представлений.

В этом коротком Уроке 9 мы переместим NewsCell представление в его собственный NewsCell.swift файл из родительского ContentView.swift файла.

Мы продолжим с того места, где закончилось последнее руководство. В идеале вы выполнили предыдущие уроки этой серии. Или вы можете скачать подготовленный проект, чтобы начать этот урок.

2. Переместите NewsCell в отдельный файл.

В конце предыдущего Урока 8 у нас были структуры кода ContentView и NewsCell (или структуры) в одном файле ContentView.swift. Давайте переместим NewsCell в его файл, чтобы мы могли хранить их отдельно.

👉 В Xcode в меню «Файл» выберите. New > File....

👉 Убедитесь, что на верхней панели выбран iOS. Выберите вариант SwiftUI View в шаблоне. Щелкните Next.

👉 В диалоговом окне «Сохранить как» измените имя нового файла с SwiftUIView.swift на NewsCell.swift. Убедитесь, что файл будет сохранен в той же папке, что и файл ContentView.swift. Щелкните Create.

👁 Xcode создает новый struct NewsCell код с представлением Text заполнителем. Обратите внимание, что Xcode жалуется, что теперь есть Invalid redeclaration of 'NewsCell', поскольку мы ранее создали struct NewsCell в файле ContentView.swift.

Давайте переместим код struct NewsCell из файла ContentView.swift в этот новый специальный NewsCell.swift файл.

👉 В навигаторе проекта (слева) щелкните файл ContentView.swift. Выделите весь код в struct NewsCell блоке кода.

👉 Вырежьте код struct NewsCell (например, с помощью команды Cut в меню Edit).

👉 Выберите файл NewsCell.swift (в навигаторе проекта). Выберите заполнитель struct NewsCell код.

👉 Вставьте код struct NewsCell поверх кода шаблона.

3. Переместите код предварительного просмотра.

Наш исходный ContentView.swift файл и новый NewsCell.swift файл содержат предварительный просмотр NewsCell. Мы должны переместить предварительный просмотр, чтобы он находился только в том же файле, что и наш перемещенный NewsCell код.

👉 Вернувшись в ContentView.swift, выберите NewsCell() в предварительном просмотре, включая .previewLayout(.sizeThatFits).

👉 Вырежьте его (например, выбрав Cut в меню Edit).

👉 Переключитесь на NewsCell.swift. Выберите NewsCell() в предварительном просмотре. Вставьте, чтобы заменить его.

👁 Xcode показывает предварительный просмотр NewsCell в файле NewsCell.swift, а не в файле ContentView.swift. Возможно, вам потребуется обновить страницу с помощью кнопки Resume в предварительном просмотре.

👉 Запустите приложение, чтобы убедиться, что ошибок нет.

4. Зафиксируйте изменения

Как вы это делали раньше:

  1. 👉 Выберите Commit в меню Source Control.
  2. 👉 Введите описание, например: NewsCell: moved to separate file
  3. 👉 Нажмите кнопку Commit.

5. Далее…

Наш NewsCell код теперь находится в собственном NewsCell.swift файле. Мы будем создавать отдельный файл, когда мы начнем строить каждое новое представление, вместо того, чтобы требовать его.

Затем, в Урок 10, мы извлечем свойства текста и изображения для создания различных экземпляров NewsCell.

Смотрите предстоящие уроки в Оглавлении. Следуйте за автором, чтобы получать уведомления о других статьях.

⁉️ Если у вас есть какие-либо вопросы или комментарии, пожалуйста, добавьте ответ ниже.

Эта серия выпущена через Next Level Swift. Подпишитесь, чтобы быть в курсе и никогда не пропустите новый учебник из этой серии!



Мы всегда ищем талантливых и увлеченных Swift-разработчиков! Загляните в раздел нашего писателя и узнайте, как поделиться своими знаниями с сообществом Next Level Swift!