Передача данных
Часть раздела Введение в SwiftUI путешествия по Swift на Coddy. Урок 36 из 50.
Экран с подробной информацией обычно представляет собой отдельную структуру представления со свойством для отображаемых данных:
struct RecipeDetail: View {
let recipe: Recipe
var body: some View {
Text("Ready in \(recipe.minutes) minutes")
.navigationTitle(recipe.name)
}
}Swift предоставляет структуре инициализатор с параметром для каждого хранимого свойства, поэтому RecipeDetail(recipe: pancakes) создаёт её. В списке каждая ссылка передаёт данные своей строки:
List(recipes) { recipe in
NavigationLink(recipe.name) {
RecipeDetail(recipe: recipe)
}
}Каждая строка получает ссылку на экран с подробной информацией о своём рецепте. Представлению с подробной информацией вообще не нужно знать о списке.
Задание
СреднеЗаверши RecipeDetail: он отображает Ready in 15 minutes (используя minutes рецепта) в тексте с идентификатором time и использует название рецепта в качестве заголовка. Затем сделай каждую строку списка NavigationLink с названием рецепта в качестве заголовка, который открывает RecipeDetail для этого рецепта.
Попробуйте сами
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в SwiftUI
10Проект — Coddy Coffee
Обзор проектаЭкраны напитков2Отображение содержимого
Текстовые представленияЧисла в текстеШрифтыЦветаSF SymbolsПовторение — ценник5Состояние и кнопки
КнопкиСвойство @StateСостояние «истина или ложь»Условные представленияПовторение — счётчик очков8Навигация
NavigationStackNavigationLinkПередача данныхЛисты и оповещенияПовторение — справочник растений6Ввод данных пользователем
Текстовое полеПереключательСчётчик и ползунокВыборПовторение — форма заказаПотренируйтесь самостоятельно: Песочница Swift