到目前为止我所拥有的:
我有两个视图,第一个视图是我的ContentView
将在SceneDelegate
(这是标准的(中加载到scene(_:willConnectTo:options:)
方法中。我已经嵌入了NavigationView
到我的ContentView
的身体属性。第二个视图DetailView
可以通过NavigationLink
导航到,要向后导航,您可以使用NavigationView
创建的后退按钮。
struct ContentView: View {
var body: some View {
NavigationView {
Form {
NavigationLink(destination: DetailView()) {
Text("Navigate")
}
}
.navigationBarTitle("Some Title")
}
}
}
struct DetailView: View {
var body: some View {
Text("Detail")
.navigationBarTitle("Another Title")
}
}
SceneDelegate
scene(_:willConnectTo:options:)
方法的内部:
let contentView = ContentView()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: contentView)
self.window = window
window.makeKeyAndVisible()
}
我想做什么:
现在我想根据SceneDelegate
中scene(_:willConnectTo:options:)
方法内部的connectionOptions
立即导航到DetailView
。
我的问题:
当我根据connectionOptions
将let contentView = ContentView()
替换为let contentView = DetailView
时,我的ContentView
不再在我的视图层次结构中,因此我没有NavigationView
布局。
问题:
如何在不丢失由另一个视图中的NavigationView
创建的任何导航功能(包括导航栏、后退按钮和能够更深入地导航(的情况下导航到视图层次结构中的某个视图?
使用NavigationLink(_,destination:,tag:,selection:)
并将selection
绑定到来自connectionOptions
的相关数据。
有关详细说明和示例代码,请参阅 https://nalexn.github.io/swiftui-deep-linking/。