如何在SwiftUI中通过.contextMenu删除数组keyData的指定行
实现方法
你只需要在按钮的action闭包中匹配到当前元素对应的数组索引,再执行删除操作即可。因为你当前用ForEach($keyData)的写法遍历,说明你的ListView已经遵循了Identifiable协议,直接通过id匹配索引即可:
ForEach($keyData) { $i in // 注意你原代码这里多了一个多余的右括号,已经修正 NavigationLink { // 你的跳转目标视图逻辑 } .contextMenu { Button { // 核心删除逻辑 if let index = keyData.firstIndex(where: { $0.id == i.id }) { // 可以包裹withAnimation实现删除动画 withAnimation { keyData.remove(at: index) } } } label: { Text(i.firstName) + Text(" ") + Text(i.lastName) + Text(" löschen") } } }
如果你的ListView没有遵循Identifiable协议,把匹配条件换成你用来区分元素的唯一字段即可。
内容的提问来源于stack exchange,提问作者Nikolass
相关产品推荐
相关产品推荐

