我正在 SwiftUI 中创建一个自定义框架,它将在屏幕之间进行导航。实现它的应用程序也将具有导航,我如何避免应用程序和应用程序中重复的导航场景。
在使用 UIKit 构建的框架中,可以访问应用程序的导航并将视图控制器推送到其上,但不确定如何使用 SwiftUI 来实现
您可能需要向您的框架提供对
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)
}
}
}
}
}