データの受け渡し
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を完成させます。レシピのminutesを使用して、識別子timeを持つテキストにReady in 15 minutesと表示し、レシピの名前をタイトルとして使用します。次に、各リスト行をレシピの名前をタイトルとするNavigationLinkにし、そのレシピのRecipeDetailを開くようにします。
自分で試してみよう
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
SwiftUI入門のすべてのレッスン
自分で練習してみよう: Swiftプレイグラウンド