SwiftUI:クリック時にボタンを1つだけ折りたたむ方法はありますか?すべてではありません

イゴール

スクロールビュー内に3つのボタンを追加しました。ユーザーがボタンをクリックしたときに効果を発揮したいのですが、すべてのボタンではなく、そのボタンだけがクリックされるため、非表示の説明はクリックされたボタンにのみ表示されます。

説明のないボタン

説明付きのボタン

そしてコード:

struct WordCells: View {
    @State private var toggleView = false
    var numberOfItems = Int.init()
    var body: some View {
        GeometryReader { geometry in
            VStack(spacing: 40.0) {
                ForEach(0..<self.numberOfItems) {item in
                    Button(action: {
                        withAnimation(.easeInOut(duration: 0.5)) {
                            self.toggleView.toggle()
                       }
                   })
                   {
                    VStack {
                       HStack {
                            Text("Button Text")
                                .fontWeight(.bold)
                                .foregroundColor(.black)
                                .font(.callout)

                            Spacer()

                            Text("Description")
                                .fontWeight(.bold)
                                .foregroundColor(.customLabel)
                                .font(.callout)
                            }
                        if self.toggleView {
                            HiddenDescriptionView()
                        }
                       }
                       .frame(width: geometry.size.width/1.3)
                   }

                   .padding(23.0)
                   .background(Color.white)

               }
                .clipShape(RoundedRectangle(cornerRadius: 32))
                .shadow(color: .customLabel, radius: 15)
           }
        }
    }
}
彼の気性

これが解決策です。Xcode 11.4 / iOS13.4でテスト済み

struct WordCells: View {
    @State private var toggleView: Int? = nil  // << selection
    var numberOfItems = Int.init()
    var body: some View {
        GeometryReader { geometry in
            VStack(spacing: 40.0) {
                ForEach(0..<self.numberOfItems) {item in
                    Button(action: {
                        withAnimation(.easeInOut(duration: 0.5)) {
                            if self.toggleView == item { // << here !!
                                self.toggleView = nil
                            } else {
                                self.toggleView = item
                            }
                       }
                   })
                   {
                    VStack {
                       HStack {
                            Text("Button Text")
                                .fontWeight(.bold)
                                .foregroundColor(.black)
                                .font(.callout)

                            Spacer()

                            Text("Description")
                                .fontWeight(.bold)
                                .foregroundColor(.gray)
                                .font(.callout)
                            }
                        if self.toggleView == item { // << selection !!
                            HiddenDescriptionView()
                        }
                       }
                       .frame(width: geometry.size.width/1.3)
                   }

                   .padding(23.0)
                   .background(Color.white)

               }
                .clipShape(RoundedRectangle(cornerRadius: 32))
                .shadow(color: .gray, radius: 15)
           }
        }
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

条件に基づいて値を折りたたむ(Group Byを使用するだけではありません)

分類Dev

Rustでインデックスを使用して折りたたむ方法はありますか?

分類Dev

HTML角度でdivを折りたたむには、ボタンを2回クリックする必要があります

分類Dev

Apache2.4はすべてのシンボリックリンクをたどるわけではありません

分類Dev

Angularを使用して、クリック時にコンポーネントを動的に追加するにはどうすればよいですか?(1つだけではありません)

分類Dev

Androidボタンは、クリックするたびにイベントをトリガーするわけではありません

分類Dev

ボタンをクリックするだけで、5つの段落のうち3番目の段落を非表示にします。段落にクラスやIDを割り当てる必要はありません。

分類Dev

ng-repeatの1つのボタンをクリックすると色が変わりますが、すべてがAngularjsを使用しているわけではありません

分類Dev

Javaの:特定の属性に基づいて、2つの与えられたリストから、すべてではありません・イン・交差要素を含むリストを作成するための適切な方法はありますか?

分類Dev

Bootstrap 4は、すべてではなくクリック時に1つの要素だけを切り替える方法を切り替えます

分類Dev

アクションのリストを(>>)で折りたたむHaskellの演算子はありますか?

分類Dev

Jquery:クリック時に1つのクラスのみを選択します-すべてではありません

分類Dev

Java WebアプリケーションにはHibernateセッションが1つだけ含まれていますか?また、このHibernateセッションをクリアする方法はありますか?

分類Dev

折れ線グラフ(リチャート)でクリックした線だけの色を変更する方法はありますか?

分類Dev

1つの場所からすべてのGPSロケーションを取得する必要があります。最高だけではありません。

分類Dev

カウント機能を使用した後に見つかったすべてのインデックスを見つける方法はありますか?

分類Dev

#region定義を無視して、すべてのC#コードブロックを折りたたむ方法はありますか?

分類Dev

#region定義を無視して、すべてのC#コードブロックを折りたたむ方法はありますか?

分類Dev

Titan / DynamoDbは、コミット時に取得したすべてのロックを解放するわけではありません(gremlin経由)

分類Dev

iMacrosはすべてのリンクを1つのタブで1つずつ開いていますが、すべての新しいタブで開いているわけではありませんか?

分類Dev

ボタンクリック時にコードビハインドから複数のJavaScript関数を呼び出したい。3つのjavascript関数では問題なく動作しますが、それ以上ではありません

分類Dev

通知にすべてのアクションボタンが表示されるわけではありません

分類Dev

cssでテーブルを作成する最もクリーンな方法。1つの列には明示的な幅がなく(ただしコンテンツを折り返す)、他の列には固定幅がありますか?

分類Dev

Xcodeプロジェクトのすべてのメソッドを折りたたむ方法はありますか?

分類Dev

Docusign:事前に入力されたタブをすべての関係者に表示します(割り当てられただけではありません)

分類Dev

SwiftUIのForEachで押されたボタンを渡す(インデックスを付ける)方法はありますか?

分類Dev

クリック可能にするために画像をボタンで囲む必要がありますか?

分類Dev

スタイリングのために各ボックスを選択するにはどうすればよいですか?3つのクラスがあり、ボックスの子クラスはボックスとしか言いませんが、10個あります

分類Dev

ボタンをクリックしたリスナーはありますか?

Related 関連記事

  1. 1

    条件に基づいて値を折りたたむ(Group Byを使用するだけではありません)

  2. 2

    Rustでインデックスを使用して折りたたむ方法はありますか?

  3. 3

    HTML角度でdivを折りたたむには、ボタンを2回クリックする必要があります

  4. 4

    Apache2.4はすべてのシンボリックリンクをたどるわけではありません

  5. 5

    Angularを使用して、クリック時にコンポーネントを動的に追加するにはどうすればよいですか?(1つだけではありません)

  6. 6

    Androidボタンは、クリックするたびにイベントをトリガーするわけではありません

  7. 7

    ボタンをクリックするだけで、5つの段落のうち3番目の段落を非表示にします。段落にクラスやIDを割り当てる必要はありません。

  8. 8

    ng-repeatの1つのボタンをクリックすると色が変わりますが、すべてがAngularjsを使用しているわけではありません

  9. 9

    Javaの:特定の属性に基づいて、2つの与えられたリストから、すべてではありません・イン・交差要素を含むリストを作成するための適切な方法はありますか?

  10. 10

    Bootstrap 4は、すべてではなくクリック時に1つの要素だけを切り替える方法を切り替えます

  11. 11

    アクションのリストを(>>)で折りたたむHaskellの演算子はありますか?

  12. 12

    Jquery:クリック時に1つのクラスのみを選択します-すべてではありません

  13. 13

    Java WebアプリケーションにはHibernateセッションが1つだけ含まれていますか?また、このHibernateセッションをクリアする方法はありますか?

  14. 14

    折れ線グラフ(リチャート)でクリックした線だけの色を変更する方法はありますか?

  15. 15

    1つの場所からすべてのGPSロケーションを取得する必要があります。最高だけではありません。

  16. 16

    カウント機能を使用した後に見つかったすべてのインデックスを見つける方法はありますか?

  17. 17

    #region定義を無視して、すべてのC#コードブロックを折りたたむ方法はありますか?

  18. 18

    #region定義を無視して、すべてのC#コードブロックを折りたたむ方法はありますか?

  19. 19

    Titan / DynamoDbは、コミット時に取得したすべてのロックを解放するわけではありません(gremlin経由)

  20. 20

    iMacrosはすべてのリンクを1つのタブで1つずつ開いていますが、すべての新しいタブで開いているわけではありませんか?

  21. 21

    ボタンクリック時にコードビハインドから複数のJavaScript関数を呼び出したい。3つのjavascript関数では問題なく動作しますが、それ以上ではありません

  22. 22

    通知にすべてのアクションボタンが表示されるわけではありません

  23. 23

    cssでテーブルを作成する最もクリーンな方法。1つの列には明示的な幅がなく(ただしコンテンツを折り返す)、他の列には固定幅がありますか?

  24. 24

    Xcodeプロジェクトのすべてのメソッドを折りたたむ方法はありますか?

  25. 25

    Docusign:事前に入力されたタブをすべての関係者に表示します(割り当てられただけではありません)

  26. 26

    SwiftUIのForEachで押されたボタンを渡す(インデックスを付ける)方法はありますか?

  27. 27

    クリック可能にするために画像をボタンで囲む必要がありますか?

  28. 28

    スタイリングのために各ボックスを選択するにはどうすればよいですか?3つのクラスがあり、ボックスの子クラスはボックスとしか言いませんが、10個あります

  29. 29

    ボタンをクリックしたリスナーはありますか?

ホットタグ

アーカイブ