当我单击视图中的单个Chip时,它会触发所有芯片中的操作。例如,如果我点击"Date“芯片,我希望执行self.viewModel.showDateSelection.toggle()。它确实会被执行,但self.viewModel.showTypeSelection.toggle()和self.viewModel.showPointsSelection.toggle()也会被执行。我不明白为什么点击一个芯片就会触发所有芯片上的动作。
屏幕
struct EventsScreen: View {
@EnvironmentObject
var viewModel: EventsViewModel
//...
var body: some View {
GeometryReader { geometry in
List {
ZStack(alignment: .top) {
// ...
VStack {
// ...
HStack {
Spacer()
Chip(text: "Dates", action: {
self.viewModel.showDateSelection.toggle()
})
Chip(text:"Type", action: {
self.viewModel.showTypeSelection.toggle()
})
Chip(text: "Points", action: {
self.viewModel.showPointsSelection.toggle()
})
Spacer()
}
}
}
// ...
}
}
}
}芯片
struct Chip: View {
var text: String
var action: () -> Void
var body: some View {
Button(action: self.action) {
HStack {
Text(text).foregroundColor(Color.white)
Image("drop_down").foregroundColor(Color.white)
}
.padding(EdgeInsets.init(top: 4, leading: 16, bottom: 4, trailing: 16))
.background(Color.black)
.cornerRadius(40)
}
}
}发布于 2020-03-11 09:24:23
在一个列表项中有多个按钮在SwiftUI中仍然存在问题
你可以在onTapGesture中使用文本而不是按钮来解决这个问题
https://stackoverflow.com/questions/60625825
复制相似问题