fmz*_*fmz 1 foreach list button swiftui
我有一个带有复选框、标题和计时器图标的项目列表:
复选框是一个按钮,计时器图标是一个具有与其相关联的独特操作的按钮。但是,如果我点击单元格内的任何地方,它会同时触发两个按钮操作。旨在使它们彼此独立运行以及在单元中独立运行。如何修改以下代码以保持操作分开?
List {
ForEach(tasks, id: \.self) { task in
HStack {
Button(action: {
task.isComplete.toggle()
try? self.moc.save()
print("Done button tapped")
}) {
Image(systemName: task.isComplete ? "square.fill" : "square")
}
.padding()
Text(task.name ?? "Unknown Task")
Spacer()
Button(action: {
print("timer button tapped")
}) {
Image("timer")
}
}
}
.onDelete(perform: deleteTask)
}
Run Code Online (Sandbox Code Playgroud)
这是 List 的默认行为,它标识行中的 Button 并使整行处于活动状态,改为使用.onTapGesture如下
List {
ForEach(tasks, id: \.self) { task in
HStack {
Image(systemName: task.isComplete ? "square.fill" : "square")
.padding()
.onTapGesture {
task.isComplete.toggle()
try? self.moc.save()
print("Done button tapped")
}
Text(task.name ?? "Unknown Task")
Spacer()
Image("timer")
.onTapGesture {
print("timer button tapped")
}
}
}
.onDelete(perform: deleteTask)
}
Run Code Online (Sandbox Code Playgroud)