传递数据
本课属于 Coddy Swift 学习旅程的“SwiftUI 入门”单元。第 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:在标识符为 time 的文本中显示 Ready in 15 minutes(使用食谱的 minutes),并将食谱名称用作标题。然后,将每一行列表设为标题为食谱名称的 NavigationLink,点击后打开该食谱对应的 RecipeDetail。
亲手试试
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
SwiftUI 入门中的所有课
自己练习: SwiftUI 在线编辑器