在SwiftUI视图之间导航

时间:2020-06-03 21:17:16

标签: swift xcode swiftui

我不知道如何在带有按钮的视图之间导航。

我在网上找到的唯一一件事是细节视图,但是我不希望在左上角有一个后退按钮。我希望通过两个按钮连接两个独立的视图,一个在第一个按钮上,另一个在第二个按钮上。

此外,如果要删除第二个视图上的按钮,则应该停留在该位置,唯一的选择是返回到第一个视图会使应用崩溃。

在情节提要中,我只需要创建一个带有动作TouchUpInSide()的按钮,然后指向首选的视图控制器即可。

您还习惯于使用故事板时,进入SwiftUI是否值得?

1 个答案:

答案 0 :(得分:1)

解决方案之一是在主视图中使用@State变量。此视图将显示子视图之一,具体取决于@State变量的值:

struct ContentView: View {
    @State var showView1 = false

    var body: some View {
        VStack {
            if showView1 {
                SomeView(showView: $showView1)
                    .background(Color.red)
            } else {
                SomeView(showView: $showView1)
                    .background(Color.green)
            }
        }
    }
}

然后将此变量传递到其子视图中,您可以在其中对其进行修改:

struct SomeView: View {
    @Binding var showView: Bool

    var body: some View {
        Button(action: {
            self.showView.toggle()
        }) {
            Text("Switch View")
        }
    }
}

如果您想拥有两个以上的视图,可以将@State var showView1设为enum而不是Bool