SwiftUI 视图之间的导航

Posted

技术标签:

【中文标题】SwiftUI 视图之间的导航【英文标题】:Navigation between SwiftUI Views 【发布时间】:2020-06-03 21:17:16 【问题描述】:

我不知道如何使用按钮在视图之间导航。

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

此外,如果我要删除第二个视图上的按钮,我应该会卡在那里,返回到第一个视图的唯一选择会使应用程序崩溃。

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

另外,当您习惯了故事板时,您是否认为进入 SwiftUI 值得?

【问题讨论】:

【参考方案1】:

其中一个解决方案是在主视图中有一个@State变量。此视图将根据@Statevariable 的值显示其中一个子视图:

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

【讨论】:

以上是关于SwiftUI 视图之间的导航的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swiftui 中的按钮操作上在视图控制器之间导航?

如何在 SwiftUI 中创建共享导航栏以在多个视图之间进行交互? [关闭]

我正在使用 NavigationLink 在视图之间导航,但它在 SwiftUI 的单个视图中不起作用

SwiftUI 导航视图在内容之前没有足够的空间

SwiftUI实现不同TabView标签页中任意导航层级视图之间自动相互跳转那些事儿

SwiftUI实现不同TabView标签页中任意导航层级视图之间自动相互跳转那些事儿