首页 > 解决方案 > 从一个视图转换到另一个 SwiftUI

问题描述

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

标签: viewsegueswiftui

解决方案


用一个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 元素,但它也允许对视图进行更多控制。


推荐阅读