我该如何从一个
View
切换到另一个?是否有类似 UIKit 中的 push/pop 操作?我必须使用 NavigationView
吗?如果是,应该怎么做?NavigationView
NavigationView
与 NavigationButton
相关联(据我所知,这是触发过渡的唯一方式)。以下是一个简单的示例,演示如何从主视图过渡到详细视图。
struct DetailView : View {
let value: String
var body : some View {
Text("Full View: \(value)")
}
}
struct MainView : View {
var body : some View {
NavigationView {
NavigationButton(destination: DetailView(value: "Hello World"),
label: { Text("Click Me") })
}
}
}
这将自动处理过渡并添加返回按钮。
另一种方法是使用有状态的变量来确定是否显示子视图。下面是另一个简单的示例:
struct DetailView : View {
let value: String
let onDone: () -> Void
var body : some View {
VStack {
Text("Full View: \(value)")
Button(action: onDone, label: { Text("Back") })
}
}
}
struct MainView : View {
@State var displaySubview = false
var body : some View {
VStack {
if displaySubview {
DetailView(value: "Hello World") {
self.displaySubview = false
}
} else {
Button(action: {
self.displaySubview = true
}, label: { Text("Click Me") })
}
}
}
}
这种方法要求您实现更多的UI元素,但也允许更多地控制视图。
它对我有效
struct ContentView : View {
var body : some View {
NavigationView {
NavigationLink(destination: DetailView(), label: { Text("To Detail")})
}
}}