SwiftUI - 在表单中包含可点击按钮的单元格

7

目标:

  1. 创建带按钮的行/单元格
  2. 将行/单元格嵌入表单中

我做了什么:

  1. 我创建了一个带有按钮的单元格。
struct PointTypeButtons : View {
    var body: some View {
        
        VStack {
            HStack {
                Text("Aligment")
                    .font(.subheadline)
                Spacer()
            }
            
            HStack {
                
                Button(action: {}) {
                    Image(systemName: "text.alignleft")
                        .padding(.horizontal, 25.0)
                        .padding(.vertical)
                        .background(Color.black)
                        .cornerRadius(4)
                }
                Button(action: {}) {
                    Image(systemName: "text.aligncenter")
                        .padding(.horizontal, 25.0)
                        .padding(.vertical)
                        .background(Color.black)
                        .cornerRadius(4)
                }
                Button(action: {}) {
                    Image(systemName: "text.aligncenter")
                        .padding(.horizontal, 25.0)
                        .padding(.vertical)
                        .background(Color.black)
                        .cornerRadius(4)
                }
                Button(action: {}) {
                    Image(systemName: "text.alignright")
                        .padding(.horizontal, 25.0)
                        .padding(.vertical)
                        .background(Color.black)
                        .cornerRadius(4)
                }
            }
        }
        .frame(height: nil)
    }
}

一排水平的4个按钮,左上方有“对齐”文字

  1. 然后我将这个单元格放入了一个表单中:
struct ToolbarBezier : View {
    var body: some View {
        HStack {
            Spacer()
            
            Form {
                PointTypeButtons()
            }
            .frame(width: 320.0)
            
        }
    }
}

Form中嵌入的按钮和文本

问题: 当我点击时,现在选择的是整个单元格,而不是按钮。

问题: 我应该如何点击并选择按钮? 是否应该将所有按钮(而不是单元格)暴露在表单上?问题在于,在这种情况下,表单将具有庞大的代码库,而我希望保持事物的清洁和有组织...

2个回答

9
从beta 5版本开始,SwiftUI会将任何包含

2
啊,太烦人了! - Zorayr

7
只需将(PointTypeButtons)添加到您的视图中,表单内的每个按钮点击将被识别。
.buttonStyle(PlainButtonStyle())

谢谢,它可以工作了。但是按钮的颜色将会是黑色而不是默认的蓝色。我将样式更改为BorderlessButtonStyle,现在显示默认的蓝色样式。在iOS 13、14和Xcode 12上进行了测试。 - xiang
1
这实际上应该是被接受的答案,因为你仍然可以使用“Button”。 - G. Marc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接