情况1:-当我在VStack中有多个按钮时,单击它们中的任何一个时,两个按钮的 Action 处理程序都会立即执行,只有当VStack是List的子级时,才会发生这种情况。
对于例如
List {
VStack {
Button(action: { print("A") }) {
Text("Button A")
}
Button(action: { print("B") }) {
Text("Button B")
}
}
}
在这里,当您单击任意一个按钮(例如按钮B)时,o/p为:-
一种
乙
情况2:-仅使用VStack尝试一下,即可正常工作。
对于例如
VStack {
Button(action: { print("C") }) {
Text("Button C")
}
Button(action: { print("D") }) {
Text("Button D")
}
}
在这里,当您单击任意一个按钮(例如按钮D)时,o/p为:-
d
我是iOS编程的新手,请帮助我了解我要去哪里哪里还是SwiftUI的问题?
最佳答案
将按钮样式设置为不同于默认样式的样式,例如BorderlessButtonStyle()
struct Test: View {
var body: some View {
NavigationView {
List {
ForEach([
"Line 1",
"Line 2",
], id: \.self) {
item in
HStack {
Text("\(item)")
Spacer()
Button(action: { print("\(item) 1")}) {
Text("Button 1")
}
Button(action: { print("\(item) 2")}) {
Text("Button 2")
}
}
}
.onDelete { _ in }
.buttonStyle(BorderlessButtonStyle())
}
.navigationBarItems(trailing: EditButton())
}
.accentColor(.red)
}
}
关于ios - 仅当父VStack在SwiftUI中的列表内时,才会触发多个Button的 Action 处理程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57937679/