1

これは私が仕事をしようとしている私の例です:

struct ContentView: View {
    let links = ["Item 1", "Item 2", "Item 3", "Item 4"]

    var body: some View {
        NavigationView {
            ScrollView {
                Text("My Title")
                List(links, id: \.self) {
                    link in
                    NavigationLink(destination: TestView()) {
                        Text(link)
                            .padding(.vertical, 4)
                            .frame(maxWidth: .infinity, alignment: .leading)
                    }
                }
                .frame(height: 178)
                Text("Some more content here")
            }
        }
    }
}

注: TestView は、hello world というテキストが表示された単なるビューです。

Apple Music のナビゲーション スタイルをコピーしようとしています。を入れてみButtonましたNavigationLinkが、テキストをタップしてもビューが変わらず、同時にタップしたときに行の色を確実に変更する方法が見つかりませんでした。また、いくつかのアプローチでは、私はそれを機能させることができましたが、色がアニメーション化する方法が異なります。つまり、A から B まで約 100 ミリ秒でフェードしますが、私が達成しようとしているのは、状態間で即座にアニメーション化することです (アップルミュージック)。

私の現在のアプローチは、を使用しList、その中に入れNavigationLinksてから、高さを与えることでビュー全体を切り取っています。このようにして、他のコンテンツと並べることができます。

今のところ問題なく動作していますが、行をクリックして戻ると、行が強調表示されます。なんとか画面に戻ったときに選択を解除するようにする方法はありますか?

を削除すると、リストは正常に機能し、この強調表示のバグはなかったので、このバグはList内にあることが原因であると思います。しかし、コンテンツをリストに表示できるようにする必要があり、リストを画面全体に表示するつもりはありません。ScrollViewScrollView

このアプローチでこのバグを修正する方法はありますか? を使用せずに同じ結果を達成する他の方法も喜んで提供しListます。

4

1 に答える 1