首页 > 解决方案 > 在嵌入式子视图中单击按钮的 SwiftUI 推送多个视图

问题描述

两天以来我一直在摸不着头脑,但是新的 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) 在这个块中,我有几个按钮,每个按钮都需要打开一个不同的视图。我不确定如何在这里实现我的导航内容。

标签: swiftxcodenavigationswiftuicombine

解决方案


推荐阅读