我已经使用 SwiftUI 构建了一个深层链接架构,并且大部分情况下都可以正常工作。我遇到的唯一问题是,当我在同一个选项卡和导航堆栈中时,路由到同一选项卡中不同视图的深层链接会导致这种奇怪的弹跳效果,它导航到主选项卡, 返回深层链接视图,然后退出。
在主选项卡视图中我有这个代码
.onOpenURL { url in
handleDeepLink(url: url)
}
这会转到选项卡,如果深层链接有效,则会触发隐藏的导航链接
NavigationLink(destination: CompanyPageView(symbol: deepLinkedCompany), isActive: $isDeepLinkingIn, label: { EmptyView() }).hidden()
这在大多数情况下都有效,但出于某种原因,如果我已经在标签页和页面中的另一个导航链接中,打开深层链接会导致反弹。
我的导航状态如何:
class NavState: ObservableObject {
@Published var firstLevel: String? = nil
var secondLevel: String? = nil
var thirdLevel: String? = nil
}
子视图
@EnvironmentObject var navState: NavState
@Binding var deepLinkedCompany: String
VStack {
//random view stuff
NavigationLink(destination: CompanyPageView(symbol: deepLinkedCompany), tag: "hoboken" , selection: $navState.firstLevel, label: { EmptyView() }).hidden()
}
公司页面视图
@EnvironmentObject var navState: NavState
@Environment(\.presentationMode) var mode: Binding<PresentationMode>
//view stuff
.onOpenURL{url in
self.mode.wrappedValue.dismiss()
}