一个屏幕中的多个 NavigationView

Multiple NavigationView in a screen

我在一个屏幕上有 2 个 NavigationView。 当我点击列表中的 Go To ChildView 项目时,我想在 Parent Navigation 中导航。 当我点击列表中的其他项目之一时,我想在 Container Navigation

中导航

如何将视图推送到选定的 NavigationView ?我想决定从哪个导航推送视图。

父视图

struct Parent: View {
    var body: some View {
    
    NavigationView { // Parent Navigation
        VStack {
            SearchBarView()
            ContainerView() // Container
        }
        .navigationTitle("Parent Navigation")
    }
}}

容器视图

struct ContainerView: View {
    var body: some View {
    NavigationView { // Container Navigation
        List(0..<20) { i in
            
            if i == 0 {
                Text("Go To Child View")
            } else {
                NavigationLink(
                    destination: ChildView(),
                    label: {
                        Text("Text \(i)")
                    })
            }
            
        }
        .navigationTitle("Container Navigation")
        .navigationBarTitleDisplayMode(.large)
    }
}}

您需要将导航 link 放置在内部导航视图 之外,例如。在后台,如下所示,并以编程方式激活它。

struct ContainerView: View {
    @State private var isActive = false
    var body: some View {
        NavigationView { // Container Navigation
            List(0..<20) { i in

                if i == 0 {
                    Button("Go To Child View") {
                        isActive = true           // << here !!
                    }
                } else {
                    NavigationLink(
                        destination: ChildView(),
                        label: {
                            Text("Text \(i)")
                        })
                }

            }
            .navigationTitle("Container Navigation")
            .navigationBarTitleDisplayMode(.large)
        }
        .background(
            NavigationLink(                 // << here !!
                destination: ChildView(),
                isActive: $isActive,
                label: { EmptyView() })
        )
    }
}