Создайте приложение, подобное 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. Зафиксируйте изменения
Как вы это делали раньше:
- 👉 Выберите
Commit
в менюSource Control
. - 👉 Введите описание, например:
NewsCell: moved to separate file
- 👉 Нажмите кнопку
Commit
.
5. Далее…
Наш NewsCell
код теперь находится в собственном NewsCell.swift
файле. Мы будем создавать отдельный файл, когда мы начнем строить каждое новое представление, вместо того, чтобы требовать его.
Затем, в Урок 10, мы извлечем свойства текста и изображения для создания различных экземпляров NewsCell
.
Смотрите предстоящие уроки в Оглавлении. Следуйте за автором, чтобы получать уведомления о других статьях.
⁉️ Если у вас есть какие-либо вопросы или комментарии, пожалуйста, добавьте ответ ниже.
Эта серия выпущена через Next Level Swift. Подпишитесь, чтобы быть в курсе и никогда не пропустите новый учебник из этой серии!
Мы всегда ищем талантливых и увлеченных Swift-разработчиков! Загляните в раздел нашего писателя и узнайте, как поделиться своими знаниями с сообществом Next Level Swift!