XCode 12.4 日本語化計画:Swift Tutorials
ビルドリストとナビゲーション
LandmarkDetail ビューは、ハードコードされた詳細をまだ使用してそのランドマークを表示しています。LandmarkRow と全く同様に、LandmarkDetail 型とそれを構成するビューは、データのソースとして landmark プロパティを使用する必要があります。
子ビューから始めて、CircleImage、MapView、LandmarkDetail の順に変換して、各行をハードコーディングするのではなく、渡されたデータを表示するようにします。
ステップ 1
CircleImage.swift で、保管されている画像プロパティを CircleImage に追加します。
これは、SwiftUI を使用してビューをビルドする場合の一般的なパターンです。カスタムビューは、特定のビューの一連の修飾子を包み込みカプセル化することがよくあります。
ステップ 2
プレビュープロバイダーを更新して、Turtle Rock の画像を渡すようにします。
プレビューロジックをいかに修正しても、ビルドが失敗するため、プレビューは更新されません。円の画像をインスタンス化する詳細ビューには、入力パラメータもまた必要です。
ステップ 3
MapView.swift で、coordinate プロパティを MapView に追加し、修正した座標を渡すようにプレビュープロバイダーを更新します。
詳細ビューには新しいパラメータを必要とする map ビューがあるため、この変更はビルドにも影響します。詳細ビューはまもなく修正されます。
ステップ 4
座標値に基づいて領域を更新するメソッドを追加します。
ステップ 5
現在の座標に基づいて領域の計算をトリガーする onAppear ビュー修飾子をマップに追加します。
ステップ 6
LandmarkDetail.swift で、Landmark プロパティを LandmarkDetail 型に追加します。
ステップ 7
LandmarkList.swift で、現在のランドマークを宛先の LandmarkDetail に渡します。
ステップ 8
LandmarkDetail ファイルで、必要なデータをカスタム型に渡します。
すべての接続が確立されて、プレビューが再び機能し始めます。
ステップ 9
コンテナを VStack から ScrollView に変更して、ユーザが説明的なコンテンツをスクロールできるようにし、不要になったスペーサーを削除します。
ステップ 10
最後に、navigationTitle(_:) 修飾子を呼び出して、詳細ビューを表示するときにナビゲーションバーにタイトルを付け、 navigationBarTitleDisplayMode(_:) 修飾子を呼び出してタイトルをインラインで表示します。
ナビゲーションの変更は、ビューがナビゲーションスタックの一部である場合にのみ効果があります。
ステップ 11
ライブプレビューに切り替えて、リストからナビゲートしたときに詳細ビューに正しいランドマークが表示されることを確認します。
    CircleImage.swift
上記のリストの 16 行目を以下のように書き足します。
    MapView.swift
上記のリストの 14 行目に、以下のように書き足します。
上記のリストの 6 行目から 12 行目を以下のように書き換えます。
    LandmarkDetail.swift
    LandmarkList.swift
上記の LandmarkDetail.swif のリストで 8、12、17、22、24、31、33 行目をそれぞれ以下のように書き換えます。
    LandmarkDetail.swift
さらに 7 行目を以下のように書き換え、37 行目を削除します。