情况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/

10-17 01:10