swift - 在嵌入式子视图中单击按钮的 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) 在这个块中,我有几个按钮,每个按钮都需要打开一个不同的视图。我不确定如何在这里实现我的导航内容。
解决方案
推荐阅读
- c++ - 暂停功能它永远循环
- node.js - 如何修复流类型别名未定义。eslint 抛出的 eslint(no-undef)
- excel - 对象在循环内的 IF 语句中不支持此属性/方法
- javascript - 循环通过开放层特征对象数组
- javascript - 图标传单地图javascript
- symmetricds - Symmetricds 支持空间数据库?
- java - 我不明白复制构造函数是如何工作的
- jquery - JQuery保存文件并从中读取而不是每次都打开新版本
- amazon-web-services - 跨账户 IAM 访问被 GUI 客户端拒绝,但通过 CLI 允许
- python - 如何在 Python 的不同目录中读取/创建文件