SwiftUI 避坑-Form和Button点击问题

267 阅读1分钟

image.png

问题和场景描述:

在Form表单或List中,如果行里有多个按钮,当点击某个按钮时,所有按钮都自动点击。

这个问题困扰了无数人,无论他们有多少经验。

原因

当表单或列表中有行时,SwiftUI 喜欢假设行本身是可点击的。这使得用户 可以点击行中的任意位置来触发其中的按钮。

解决办法

可以通过附加到整体的额外修饰符.buttonStyle(.plain)来禁用整个“点击行以触发其按钮”行为 ,这使得 SwiftUI 单独对待每个按钮。

HStack {
    ForEach(0..<5, id:\.self){
        Button("X"){
        
        }
    }
}
.buttonStyle(.plain)