【发布时间】:2023-02-24 07:33:02
【问题描述】:
我想在 NavigationStack 中从 View PathS 转到 PathS,withOut 创建一个新的 PathB 对象,也不删除导航堆栈层次结构中的 PathC 的视图实例。
细节:
@State var path: [String] = []
// or this can also be written
//@State var path: NavigationPath = NavigationPath()
var body: some View {
NavigationStack(path: $path) {
ZStack{
Text("SomeThing")
}
.navigationDestination(for: String.self, destination: { path in
switch path {
case "pathA" :
PathA().navigationBarBackButtonHidden()
case "pathB":
PathB().navigationBarBackButtonHidden()
case "pathC":
PathC().navigationBarBackButtonHidden()
default:
PathD().navigationBarBackButtonHidden()
}
})
在这里我尝试的是在某些视图中完成导航时匹配参考名称
path.append("pathA")
现在考虑我正在查看 PathS()。我想导航回 PathB。一种选择是四处滑动,但我禁用了导航后退按钮。
所以我要做的是
来自 PathS
path.append("pathB")
这将创建一个新的 PathB() 视图,而不是返回到我拥有的视图。
现在我的要求是返回到我创建的 PathB() 而不是新对象。
如果我的解释不够充分,请随时发表评论
【问题讨论】:
-
path数组在您要从PathD移动到PathB时的全部内容是什么? -
@ScottThompson,最初它是一个空数组,但在 PathD 时,它应该包含路径:[String] = ["pathA","pathB","pathC","pathD"]。