首页 > 解决方案 > SwiftUI 深度链接导航弹跳

问题描述

我已经用 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()
}

标签: swiftswiftuiswift5swiftui-navigationlinkswiftui-navigationview

解决方案


推荐阅读