从一个视图过渡到另一个SwiftUI

时间:2019-06-08 06:01:45

标签: view segue swiftui

如何从一个View过渡到另一个?是否有类似UIKit的push / pop?我必须使用NavigationView吗?如果需要,怎么使用?

2 个答案:

答案 0 :(得分:0)

使用NavigationView

NavigationViewNavigationButton绑定(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")})
    }
}}