使用 swiftui 制作的自定义框架内的导航

问题描述 投票:0回答:1

我正在 SwiftUI 中创建一个自定义框架,它将在屏幕之间进行导航。实现它的应用程序也将具有导航,我如何避免应用程序和应用程序中重复的导航场景。

在使用 UIKit 构建的框架中,可以访问应用程序的导航并将视图控制器推送到其上,但不确定如何使用 SwiftUI 来实现

swiftui swiftui-navigationlink swiftui-navigationstack swift-custom-framework
1个回答
0
投票

您可能需要向您的框架提供对

NavigationPath
的绑定。这将让您分享通话内容中的
NavigationStack

struct Framework: View {
    @Binding var navPath: NavigationPath

    enum LocalNavDestination {
        case view1
        case view2
    }

    var body: some View {
        VStack(spacing: 40) {
            NavigationLink("Go to view1", value: LocalNavDestination.view1)
            NavigationLink("Go to view2", value: LocalNavDestination.view2)
        }
        .buttonStyle(.bordered)
        .navigationTitle("Framework")
        .navigationDestination(for: LocalNavDestination.self) { dest in
            switch dest {
            case .view1:
                Text("View1")
            case .view2:
                Text("View2")
            }
        }
    }
}

struct ContentView: View {
    @State private var path = NavigationPath()

    enum NavDestination {
        case localContent
        case framework
    }

    var body: some View {
        NavigationStack(path: $path) {
            VStack(spacing: 40) {
                NavigationLink("Go to local content", value: NavDestination.localContent)
                NavigationLink("Go to framework", value: NavDestination.framework)
            }
            .buttonStyle(.bordered)
            .navigationTitle("Home")
            .navigationDestination(for: NavDestination.self) { dest in
                switch dest {
                case .localContent:
                    Text("Local content")
                case .framework:
                    Framework(navPath: $path)
                }
            }
        }
    }
}

Animation

© www.soinside.com 2019 - 2024. All rights reserved.