我创建了一个可重用的组件,它在表单中具有选择器、文本字段和按钮。但是,如果存在该按钮,则点击选择器字段不会转到选择器。相反,它执行按钮代码。文本字段工作正常。如果我删除按钮代码,选择器将出现正确的行为。那么问题是如何在这个组件中同时拥有这两个元素?请注意,预览添加了导航和表单,否则这些导航和表单将来自父视图。
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()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以做的是将 应用于PlainButtonStyle您的按钮。这将停止按钮的点击覆盖表单中的整个单元格:
Button(action: {}) {
Text("Button")
}
.buttonStyle(PlainButtonStyle())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |