SwiftUI列表刷新自动返回详情页的问题与解决咨询
SwiftUI列表刷新导致详情页自动返回的问题与解决
在SwiftUI中实现了列表元素跳转至详情页的功能,但从服务器刷新列表数据时,若当前处于详情页,应用会自动返回列表页。原因是列表重建导致NavigationLink的引用丢失,想询问是否有方法阻止该自动返回行为。
原始首页结构代码:
NavigationView { HStack { ForEach(items) { item in NavigationLink(destination: DetailView(id: item.id)) { Text(item.name) } } } }
更新:临时解决方案
最终解决了问题,但并非理想方式:将NavigationLink从ForEach中移出,放到外部,通过状态变量控制跳转状态:
// 定义在body外部 @State private var isShowingDetailView = false @State private var selectedID: String = "" NavigationView { HStack { NavigationLink(destination: DetailView(id: selectedID), isActive: $isShowingDetailView) { } ForEach(items) { item in Text(item.name) .onTapGesture { self.selectedID = item.id self.isShowingDetailView = true } } } }
内容的提问来源于stack exchange,提问作者danybarco
相关产品推荐
相关产品推荐

