【发布时间】:2021-05-05 17:45:43
【问题描述】:
我最近遇到了在导航视图中“深度链接”到第三级列表的问题。
这里有一些背景:
- 我的应用有一个基于 SwiftUI 列表/表单的设置菜单
- 作为典型的菜单,您可以从一个列表项跳转到下一个列表(“更深”一级) - 这是 NavigationLink 实现的
- 由于顶层的列表嵌入在导航视图中,SwiftUI 会自动为下层的子视图添加一个“返回”按钮,以返回到第一个菜单页面
到目前为止,很容易。现在,这是我尝试做的(也请参考附图):
- 我想从第一个视图(可能也从其他不相关的视图)直接跳转到子菜单;即位于我的菜单的第二或第三级的列表
- 到目前为止,我所做的是设置一个程序化导航链接,该链接直接链接到图中名为“View 3”的内容。但是,这不提供通过导航视图中的后退按钮跳回到“视图 2”然后再跳到“视图 1”的可能性
现在我的问题是:是否可以跳转到“视图 3”(可能从我的应用程序中的任何位置)并且仍然能够返回到“视图 2”,然后通过导航视图中的后退按钮?
这是视图 1:
struct SwiftUIView1: View {
var body: some View {
NavigationView {
VStack {
List {
NavigationLink("Link", destination: SwiftUIView2())
Text("TBD")
Text("TBD")
}
.navigationTitle("View 1")
Button("Jump to view 3", action: XXX) // <-- What to put here?
}
}
}
}
这是视图 2:
struct SwiftUIView2: View {
var body: some View {
List {
NavigationLink("Link", destination: SwiftUIView3())
Text("TBD")
Text("TBD")
}
.navigationTitle("View 2")
}
}
这是视图 3:
struct SwiftUIView3: View {
var body: some View {
Text("Hello world")
.navigationTitle("View 3")
}
}
这是我想要实现的目标的可视化:
我会很感激任何想法!
【问题讨论】:
-
现在我的问题是:有没有可能... - 没有。
标签: ios swiftui deep-linking navigationview swiftui-navigationlink