我有一个SwiftUI列表,显示了一些单元格。我想在每个单元格中放置3个按钮。我希望用户可以在不选择单元格或触发其他按钮的情况下轻按每个按钮。 现在,当用户点击单元格时,我拥有的代码会触发所有3个按钮。
struct ContentView: View {
@State var names = ["Mohamed", "Ahmed", "Ali"]
var body: some View {
NavigationView {
List {
ForEach(names, id: \.self) { name in
NameCell(name: name)
}
}
.navigationBarTitle("Names")
}
}
}
struct NameCell: View {
let name: String
var body: some View {
VStack(alignment: .leading, spacing: 10) {
Text(name)
.font(.headline)
HStack {
Button("Action1") { print("action 1 tapped") }
Button("Action2") { print("action 2 tapped") }
Button("Action3") { print("action 3 tapped") }
}
}
}
}
答案 0 :(得分:0)
在SwiftUI
中看起来是一个错误,而在单元格整个区域内使用按钮则可以轻按。要解决此问题,您可以将Button
替换为Text
,并在TapGesture
上添加Text
。
请尝试以下代码。
struct NameCell: View {
....
HStack(spacing: 10) {
Text("Action1").onTapGesture {
print("action 1 tapped")
}
Text("Action2").onTapGesture {
print("action 2 tapped")
}
Text("Action3").onTapGesture {
print("action 3 tapped")
}
}
....
}