HStack内的两个按钮互相作用

时间:2019-10-23 03:07:09

标签: ios swiftui

我创建了一个带有水平堆栈视图(标签,按钮,按钮)的简单列表。每个按钮都有自己的按钮动作,但是当我运行时,我可以看到点击一个按钮会打印两个动作。断点也出现在两个动作中。她是我的密码gif

var body: some View {
    NavigationView {
        List {
            ForEach(self.heroViewModel.heros, id: \.self) { hero in
                Section(header: Text(hero.name)) {
                    ForEach(hero.movies, id: \.self) { movieName in
                        HStack {
                            Text(movieName)
                                .onTapGesture {
                                    return
                            }.frame(width: 150, height: 30, alignment: .leading)
                            Spacer()

                            Button(action: {
                                print("Rate us")
                            }, label: {
                                Text("Rate us")
                                    .background(Color.red)
                                }).padding()

                            Spacer()
                            Button(action: {
                                print("watch me")
                            }, label: {
                                Text("Watch")
                                    .background(Color.red)
                                }).padding()
                        }

                    }
                }
            }
        }.navigationBarTitle("Heros List")
    }
}

3 个答案:

答案 0 :(得分:4)

需要像这样使用onTapGesture而不是action

Button(action: {}) {
                                Text("watch")
                            }.frame(minWidth: 0, maxWidth: .infinity)
                                .background(Color.red)
                                .onTapGesture {
                                    print("watch")
                            }

答案 1 :(得分:1)

使用按钮样式

.buttonStyle(BorderlessButtonStyle())

示例:-

Button(action: {
     print("Rate us")
     }, label: {
     Text("Rate us")
     .background(Color.red)
}).buttonStyle(BorderlessButtonStyle())

答案 2 :(得分:0)

您也可以使用这种样式:

.buttonStyle(PlainButtonStyle())