SwiftUI:自动在视图层次结构中来回导航。

问题描述 投票:0回答:1

我正在做一个SwiftUI应用,它的导航层次结构在多个视图上看起来像这样。

地方列表] -> [一个地方的细节] -> [地图] 。

在地图上,不仅显示之前选择的地方,而且还显示[地方列表]中已知的所有地方.用户应该能够在地图上选择另一个地方,并显示它的细节.可以从地图上打开另一个[一个地方的细节]实例,但这样一来,视图的堆栈会变得越来越长.我认为最好是回到完整的导航层次结构,并从[地方列表]中打开另一个[一个地方的细节].

导航回去。地图] -> [一个地方的细节] -> [地方列表] -> [一个地方的细节]。

但是,我不知道如何最巧妙地实现这样的方法。我可以用

self.presentationMode.wrappedValue.dismiss()

并逐一关闭每个视图,回到导航中。从[地点列表]我就会自动切换到另一个细节视图。到目前为止,我还没有尝试过这个,但我想如果我这样做,我会为每个关闭的视图得到一个动画.我不希望你这样做。 从地图切换到细节应该像正常导航一样工作。

swift uinavigationcontroller swiftui
1个回答
0
投票

在我看来,你似乎并没有真正的视图。等级制度 如果用户可以从[某地详情]到[地图],再从[地图]到[某地详情]。

考虑到这一点,最好的办法是创建一个新的视图,根据用户的操作,显示[某地详情]或[地图]内容,而隐藏另一个内容。如果我们把这个新视图称为[Combined],那么你的视图层次结构就会变成:[List of Places] -&。

地方列表]-> [组合]。

用户将从[地点列表]导航到[综合]。默认情况下,[Combined]会显示一个地方的详细信息。用户可以在这里点击某个按钮来查看地图,[组合]会隐藏一个地方的详细信息,并显示地图。组合]会隐藏一个地方的详细信息,并显示地图,但不会在堆栈上进行导航。

如果用户点击地图上的另一个地方,[组合]会隐藏地图,并显示那个地方的细节。这样一来,用户可以在细节和地图之间无缝切换。

© www.soinside.com 2019 - 2024. All rights reserved.