我正在为 iOS 应用程序创建一个入门流程,其 UI 是用
SwiftUI
编写的
SwiftUI
有一个 NavigationView
UI 组件,使用 NavigationLinks
使用户能够移至下一个视图
但是,互联网上的大多数示例仅提供一级视图深度。这意味着只有根视图中的一个视图被放入导航堆栈中。
在入门流程中,用户将从之前的视图移至下一个视图,并且只能导航回上一个视图。需要多个视图。
图: 导航视图 - 电子邮件/密码查看 -- 入职屏幕 1 --- 入门屏幕 2 ----等等
我应该将导航链接放在哪里来导航到每个视图?它们是否存在于通过变量切换的根视图中?或者它们是否存在于堆栈上的每个连续视图中?如果我尝试将 NavigationLinks 放入每个视图中,Xcode 会抱怨所述子视图中没有 NavigationView。
在 SwiftUI 中实现这种导航的正确方法是什么?
这是从一个视图到其他视图并再次返回的非常简单的导航。
如果您想完全控制序列,请使用
NavigationStack(path: $path) {...}
与 .navigationDestination(...)
如文档和许多 SO 帖子中所述。
struct ContentView: View {
var body: some View {
NavigationStack {
NavigationLink("to View1", destination: View1())
}
}
}
struct View1: View {
var body: some View {
NavigationLink("to View2", destination: View2())
}
}
struct View2: View {
var body: some View {
NavigationLink("to View3", destination: View3())
}
}
struct View3: View {
var body: some View {
Text("View3")
}
}