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

Xcode中Navigation Link添加.swipeActions无响应问题解决

解决SwiftUI列表中NavigationLink子视图滑动操作失效的问题

问题根源

当你的TipRowView内部包含NavigationLink时,NavigationLink的点击手势优先级高于滑动操作手势,会直接拦截滑动事件,导致.swipeActions无法触发,且不会抛出任何错误。

解决方案

调整视图层级,将.swipeActions附加到NavigationLink本身上,而不是其内部的子视图。具体修改如下:

struct Tip: Identifiable, Codable, Hashable{
    var id: String
    var caption: String
    var link: String
}

// 列表部分修改
ForEach(viewModel.ThreeTips) { tip in
    // 将NavigationLink作为外层容器,内部放置TipRowView
    NavigationLink(destination: YourDestinationView(url: tip.link)) {
        TipRowView(tip: tip)
    }
    .swipeActions {
        Button {
            // 这里添加删除逻辑
        } label: {
            Text("delete")
        }
    }
    .tint(.red)
}

额外说明

如果TipRowView本身就是一个NavigationLink(即该视图的返回值是NavigationLink),你需要重构TipRowView,让它返回一个纯展示型的视图,再在外部包裹NavigationLink并添加滑动操作。这样可以避免手势冲突,确保滑动操作能被正确识别。

内容的提问来源于stack exchange,提问作者user21041088

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:35:31