我到目前为止所拥有的:
我有两个视图,我的ContentView
的第一个视图将被加载到scene(_:willConnectTo:options:)
(标准)的SceneDelegate
方法内部。我在NavigationView
的body属性中嵌入了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")
}
}
scene(_:willConnectTo:options:)
中的SceneDelegate
内部方法:
let contentView = ContentView()
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: contentView)
self.window = window
window.makeKeyAndVisible()
}
我要做什么:
现在,我想根据DetailView
中connectionOptions
方法内的scene(_:willConnectTo:options:)
导航到SceneDelegate
。
我的问题:
当我根据let contentView = ContentView()
用let contentView = DetailView
替换connectionOptions
时,我的ContentView
不在视图层次结构中,因此我没有{{ 1}}布局。
问题:
如何导航到视图层次结构中的某个视图而又不丢失由另一视图内部的NavigationView
创建的任何导航功能(包括导航栏,后退按钮以及能够进行更深入的导航)?
答案 0 :(得分:0)
使用NavigationLink(_,destination:,tag:,selection:)
并将selection
绑定到connectionOptions
的相关数据上。
有关详细说明和示例代码,请参见https://nalexn.github.io/swiftui-deep-linking/。