有没有一种方法可以将按钮放入SwiftUI单元视图中?

时间:2020-04-29 13:33:24

标签: swiftui

我有一个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") }
            }
        }
    }
}

1 个答案:

答案 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")
          }
    }
  ....
}