如何在 SwiftUI ForEach 内容中将多个按钮操作分开?
Posted
技术标签:
【中文标题】如何在 SwiftUI ForEach 内容中将多个按钮操作分开?【英文标题】:How do I keep multiple button actions separate in SwiftUI ForEach content? 【发布时间】:2020-03-31 21:21:05 【问题描述】:我有一个带有复选框、标题和计时器图标的项目列表:
复选框是一个按钮,计时器图标是一个按钮,具有与之相关的独特操作。但是,如果我点击单元格内的任何位置,它会同时触发两个按钮操作。旨在使它们彼此独立运行,并且与单元中的分接头一样独立运行。如何修改以下代码以保持操作分开?
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)
【问题讨论】:
【参考方案1】:这是 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)
【讨论】:
没有什么比解决问题更能让你开心的事情了。非常感谢!以上是关于如何在 SwiftUI ForEach 内容中将多个按钮操作分开?的主要内容,如果未能解决你的问题,请参考以下文章
在 ForEach/ZStack (SwiftUI) 中将表达式分解为不同的子表达式