假设我有一行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")
        }
    }
}

当只有一个按钮被点击一次时,我看到两个按钮都被调用的回调,这不是我想要的:

button 1 tapped
button 2 tapped

推荐答案

您需要使用100PlainButtonStyle().

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

Ios相关问答推荐

在SwiftUI中使用系统图像和色调创建圆形按钮

为什么导航栏在与Style.Page的选项卡栏一起使用时停止工作?

阿拉伯文变音符号(Harakat)在文本对齐的UILabel中未对齐

如何创建具有SPM依赖项的二进制XCFramework?

无法添加以供审阅-Xcode 15.0.1

clang:错误:SDK 路径中不包含libarclite

如何使用 SwiftData 从列表中删除子项目?

当应用程序被杀死时是否还能获取位置?

如何使用 Rxswift 处理程序最喜欢的按钮

使用 AVCaptureDeviceTypeBuiltInTripleCamera 时 Select 合适的相机进行条码扫描

如何包含 Xcode 子项目标头?

缺少推送通知权利

iOS 8 - 使用自定义演示关闭视图控制器后屏幕空白

如何在 SwiftUI 中检测 TextField 的实时变化?

关闭所有打开的视图控制器的单个函数

iOS 11 navigationItem.titleView 宽度未设置

通过 segue 传递数据

interfaceOrientation在 iOS 8 中已弃用,如何更改此方法 Objective C

针对 Xcode 中的 iPad 选项

SwiftUI NavigationView navigationBarTitle LayoutConstraints 问题