SwiftUI-表格选择器和;按钮不共存

SwiftUI-表格选择器和;按钮不共存,swiftui,Swiftui,我创建了一个可重用组件,它在表单中有一个选择器、文本字段和按钮。但是,当按钮存在时,点击选择器字段不会进入选择器。而是执行按钮代码。TextField工作正常。如果我删除按钮代码,选择器将出现正确的行为。所以问题是如何在这个组件中同时包含这两个元素?请注意,预览添加了导航和表单,否则将来自父视图 var body: some View { HStack { if !showFee { Spacer()

我创建了一个可重用组件,它在表单中有一个选择器、文本字段和按钮。但是,当按钮存在时,点击选择器字段不会进入选择器。而是执行按钮代码。TextField工作正常。如果我删除按钮代码,选择器将出现正确的行为。所以问题是如何在这个组件中同时包含这两个元素?请注意,预览添加了导航和表单,否则将来自父视图

var body: some View {
        HStack {
            if !showFee {
                Spacer()
                Button(action: {
                    withAnimation(.easeInOut(duration: 0.3)) {
                        self.showFee.toggle()
                    }
                }) {
                    Image(systemName: "plus.circle")
                        .font(.largeTitle)
                }
                Spacer()
            } else {
                VStack(spacing:20) {
                    Picker(selection: $feeSelection, label: Text("Fee Type")) {
                        ForEach(0 ..< fees.count) {
                            Text(self.fees[$0])
                        }
                    }

                    TextField("Fee Amount: $", value: $feeAmount, formatter: NumberFormatter.currency)
                    .keyboardType(.decimalPad)

                    Divider()
                    Button(action: {
                        withAnimation(.easeInOut(duration: 0.3)) {
                            self.showFee.toggle()
                        }
                    }) {
                        Image(systemName: "trash.circle.fill")
                            .font(.largeTitle)
                            .foregroundColor(.red)
                    }
                }
            }
        }
        .padding()
    }
}

struct FeeCell_Previews: PreviewProvider {
    static var previews: some View {
        NavigationView {
            Form {
                FeeCell()
            }
        }
    }
}
var主体:一些视图{
HStack{
如果!showFee{
垫片()
按钮(操作:{
带动画(.easeInOut(持续时间:0.3)){
self.showFee.toggle()
}
}) {
图像(系统名称:“plus.circle”)
.font(.largeTitle)
}
垫片()
}否则{
VStack(间距:20){
选择器(选择:$feeSelection,标签:文本(“费用类型”)){
ForEach(0..<费用计数){
文本(自助费用[$0])
}
}
TextField(“费用金额:$”,值:$feeAument,格式设置器:NumberFormatter.currency)
.键盘类型(.decimalPad)
分隔器()
按钮(操作:{
带动画(.easeInOut(持续时间:0.3)){
self.showFee.toggle()
}
}) {
图像(系统名称:“垃圾桶.圆圈.填充”)
.font(.largeTitle)
.foregroundColor(.red)
}
}
}
}
.padding()
}
}
结构FeeCell\u预览:PreviewProvider{
静态var预览:一些视图{
导航视图{
形式{
费塞尔()
}
}
}
}

您可以将
普通按钮样式应用于您的按钮。这将停止按钮的抽头覆盖整个单元格,形式如下:

Button(action: {}) {
    Text("Button")
}
.buttonStyle(PlainButtonStyle())

天哪,我在这个问题上花了数不清的时间,只是为了让它成为这一行。我可以在睡梦中做很多UIKit,现在我像一个拥有SwiftUI的孩子一样感到谦卑。非常感谢。