3

我怎样才能从一个过渡View到另一个?UIKit 中是否有推送/弹出?我必须使用 aNavigationView吗?如果是这样,如何使用?

4

2 回答 2

3

用一个NavigationView

NavigationViews 绑定到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 回答