我怎样才能从一个过渡View
到另一个?UIKit 中是否有推送/弹出?我必须使用 aNavigationView
吗?如果是这样,如何使用?
问问题
2521 次
2 回答
3
用一个NavigationView
NavigationView
s 绑定到NavigationButton
(AFAIK 是触发 segue 的唯一方法)。这是一个简单的示例,主视图可以转换为详细视图。
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 元素,但它也允许对视图进行更多控制。
于 2019-06-08T06:01:45.473 回答
0
这个对我有用
struct ContentView : View {
var body : some View {
NavigationView {
NavigationLink(destination: DetailView(), label: { Text("To Detail")})
}
}}
于 2020-04-06T06:20:51.877 回答