Truyền dữ liệu
Thuộc phần Giới thiệu về SwiftUI trong hành trình Swift của Coddy. Bài học 36 trên 50.
Màn hình chi tiết thường có một cấu trúc view riêng với thuộc tính chứa dữ liệu mà màn hình hiển thị:
struct RecipeDetail: View {
let recipe: Recipe
var body: some View {
Text("Ready in \(recipe.minutes) minutes")
.navigationTitle(recipe.name)
}
}Swift cung cấp cho struct một hàm khởi tạo với tham số cho mỗi thuộc tính được lưu trữ, nên RecipeDetail(recipe: pancakes) sẽ tạo đối tượng đó. Trong danh sách, mỗi liên kết truyền dữ liệu của hàng tương ứng:
List(recipes) { recipe in
NavigationLink(recipe.name) {
RecipeDetail(recipe: recipe)
}
}Mỗi hàng có một liên kết đến màn hình chi tiết của công thức đó. Màn hình chi tiết không cần biết gì về danh sách.
Thử thách
Trung bìnhHoàn thiện RecipeDetail: thành phần này hiển thị Ready in 15 minutes (dùng minutes của công thức) trong một văn bản có định danh time, và dùng tên công thức làm tiêu đề. Sau đó, tạo mỗi hàng trong danh sách thành một NavigationLink có tiêu đề là tên công thức và mở RecipeDetail cho công thức đó.
Tự làm thử
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Giới thiệu về SwiftUI
Tự luyện tập: Playground SwiftUI