You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:27:01