如何从一个View
过渡到另一个?是否有类似UIKit的push / pop?我必须使用NavigationView
吗?如果需要,怎么使用?
答案 0 :(得分:0)
NavigationView
NavigationView
与NavigationButton
绑定(AFAIK是触发序列的唯一方法)。这是一个简单的示例,其中主视图可以过渡到详细视图。
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元素,但它还可以更好地控制视图。
答案 1 :(得分:0)
对我有用
struct ContentView : View {
var body : some View {
NavigationView {
NavigationLink(destination: DetailView(), label: { Text("To Detail")})
}
}}