XCode 12.4 日本語化計画:Swift Tutorials
ユーザー入力の処理
セクション 106
ランドマークアプリは、ランドマークのフィルタリングされたビューとフィルタリングされていないビューを切り替えることができるようになりましたが、お気に入りのランドマークのリストは引き続きハードコーディングされています。ユーザがお気に入りを追加および削除できるようにするには、ランドマークの詳細ビューにお気に入りボタンを追加する必要があります。
まず、再利用可能な FavoriteButton を作成します。
ステップ 1
FavoriteButton.swift という新しいビューを作成します。
    FavoriteButton.swift
ステップ 2
ボタンの現在の状態を示す isSet 結束変数を追加し、プレビューに定数値を提供します。
結束変数を使用するため、このビュー内で行われた変更はデータソースに逆に伝播されます。
    FavoriteButton.swift
ステップ 3
isSet の状態を切り替え、状態に基づいてその外観を変更するアクションを使用する Button を作成します。
    FavoriteButton.swift
プロジェクトが大きくなるにつれて、階層を追加することをお勧めします。先に進む前に、さらにいくつかのグループを作成します。
ステップ 4
汎用の CircleImage.swift、MapView.swift、および FavoriteButton.swift を Helpers グループに集め、landmark ビューを Landmarks グループに集めます。
次に、FavoriteButton を詳細ビューに追加し、ボタンの isSet プロパティを与えられたランドマークの isFavorite プロパティに結束します。
ステップ 5
LandmarkDetail.swift に切り替え、入力されたランドマークのインデックスをモデルデータと比較して計算します。
これをサポートするには、環境のモデルデータにもアクセスする必要があります。
    LandmarkDetail.swift
ステップ 6
新しい FavoriteButton を使用してランドマークの名前を HStack に埋め込みます。ドル記号 ($) を使用して isFavorite プロパティへの結束を提供します。
modelData オブジェクトで landmarkIndex を使用して、ボタンがモデルオブジェクトに格納されているランドマークの isFavorite プロパティを更新するようにします。
    LandmarkDetail.swift
ステップ 7
LandmarkList.swift に戻り、ライブプレビューをオンにします。
リストから詳細に移動してボタンをタップすると、リストに戻ってもこれらの変更は保持されます。両方のビューが環境 (environment) 内の同じモデルオブジェクトにアクセスするため、2 つのビューは一貫性を維持します。
以下のうち、ビュー階層でデータを下向きに渡すのはどちらですか?
@EnvironmentObject 属性 |
environmentObject(_:) 修飾子。 |
結束の役割とは何ですか?
それは値であり、その値を変える方法です。 |
それは、ビューのペアをリンクして、それらが同じデータを確実に受信するようにする方法です。 |
それは、値を一時的にフリーズして、状態遷移中に他のビューが更新されないようにする方法です。 |
ビューの状態を作成する正しい方法はどれですか?
private var showFavoritesOnly: State = false |
@State var showFavoritesOnly = false |
@State private var showFavoritesOnly = false |