SwiftUI:导航到视图层次结构内的视图

时间:2019-09-08 07:48:12

标签: swift navigation swiftui

我到目前为止所拥有的:

我有两个视图,我的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()
}

我要做什么:

现在,我想根据DetailViewconnectionOptions方法内的scene(_:willConnectTo:options:)导航到SceneDelegate

我的问题:

当我根据let contentView = ContentView()let contentView = DetailView替换connectionOptions时,我的ContentView不在视图层次结构中,因此我没有{{ 1}}布局。

问题:

如何导航到视图层次结构中的某个视图而又不丢失由另一视图内部的NavigationView创建的任何导航功能(包括导航栏,后退按钮以及能够进行更深入的导航)?

1 个答案:

答案 0 :(得分:0)

使用NavigationLink(_,destination:,tag:,selection:)并将selection绑定到connectionOptions的相关数据上。

有关详细说明和示例代码,请参见https://nalexn.github.io/swiftui-deep-linking/