list - 如何在 SwiftUI ForEach 内容中保持多个按钮操作分开?
问题描述
我有一个带有复选框、标题和计时器图标的项目列表:
复选框是一个按钮,计时器图标是一个按钮,具有与之关联的独特操作。但是,如果我点击单元格内的任何位置,它会同时触发两个按钮操作。旨在使它们彼此独立运行,并且与单元中的分接头一样独立运行。如何修改以下代码以保持操作分开?
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)
}
解决方案
这是 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)
}
推荐阅读
- python - Optimizing code for grouping by unique person
- python - Backup gsuite users contacts (with service account)
- react-native - 无法实现 react-native-elements 表单?
- android - 在 Android 上使用 Unity3D 读取 Midi 文件
- python-3.x - Pygame is not installing in macOS
- laravel - Undefined variable: category in edit.blade
- c - C中静态函数的优先级
- activemq - 我们可以根据消息属性或标头对 ActiveMQ 消息进行优先级排序吗?
- r - 如何为 ggplot2 轴中的单个值使用多种颜色?
- python - 使用 imputer 后如何将数据放入数据框中?