SwiftUI - リスト行内の複数のボタン 質問する

SwiftUI - リスト行内の複数のボタン 質問する

1 行に1 と 2 つのボタンがある場合List、行全体をハイライトせずにどのボタンがタップされたかを区別するにはどうすればよいでしょうか?

このサンプル コードでは、行内のいずれかのボタンがタップされると、両方のボタンのアクション コールバックが呼び出されます。

// a simple list with just one row
List {

    // both buttons in a HStack so that they appear in a single row
    HStack {
        Button {
            print("button 1 tapped")
        } label: {
            Text("One")
        }
            
        Button {
            print("button 2 tapped")
        } label: {
            Text("Two")
        }
    }
}

ボタンの 1 つだけを 1 回タップすると、両方のボタンのコールバックが呼び出されますが、これは望んでいることではありません。

button 1 tapped
button 2 tapped

ベストアンサー1

.bordered任意のボタンスタイル( 、.borderless.borderedProminentなど)を適用できますが、.自動

    List([1, 2, 3], id: \.self) { row in
        HStack {
            Button(action: { print("Button at \(row)") }) {
                Text("Row: \(row) Name: A")
            }
            .buttonStyle(.borderless)
            
            Button(action: { print("Button at \(row)") }) {
                Text("Row: \(row) Name: B")
            }
            .buttonStyle(.plain)
        }
    }

おすすめ記事