SwiftUI通过在嵌入式子视图中单击按钮来推送多个视图

时间:2020-08-05 01:33:36

标签: swift xcode navigation swiftui combine

两天以来我一直在挠头,但是新的SwiftUI导航部分对我来说很奇怪。

我的问题的简短描述: 我有一个ViewA,它包含3个子视图(Subview1,Subview2,Subview3)。在每个按钮中,我都有2或3个按钮(Subview1ButtonA,Subview1ButtonB,Subview1ButtonC)。 我想根据点击哪个按钮来推不同的视图。 以前,我们需要进入ViewA才能使用回调,通知来推送视图,例如,任何通知ViewA我们要推送ViewB的东西。 在这里,使用SwiftUI,我根本不了解它对我们NavigationLink的期望。

这是我的示例代码,用于演示我的用例。

// MainView.swift

final class State: ObservableObject {
    // Close allow me to close my ViewA, it is a modal and I have a button X integrated
    // in Subview1ButtonA
    @Published var closePressed: Bool = false
    @Published var isView2Presented: Bool = false
}

struct ViewA: View {
    @ObservedObject var state = State()

    var body: some View {
        NavigationView {
            VStack(content: {
                 NavigationLink(destination: View2(isPresented: self.$state.isView2Presented),
                                isActive: self.$state.isView2Presented) {
                                ViewB(closePressed: self.$state.closePressed,
                                      view2Pressed: self.$state.isView2Presented)
                 }
            })
        }
    }
}

如果我在ViewB中有第三个按钮,由于这里只有一个NavigationLink,它如何工作? 老实说,这真让我感到困惑。

谢谢您的进一步帮助!

编辑:

我有一个MainView,在这个MainView中有几个子视图(让我们说一个视图块被拉在一起形成MainView)。在这个块中,我有几个按钮,每个按钮需要打开一个不同的View。我不确定在这里如何实现我的导航功能。

0 个答案:

没有答案