Xcode中Navigation Link添加.swipeActions无响应问题解决
问题根源
当你的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
相关产品推荐
相关产品推荐

