0

我正在开发一个 SwiftUI 应用程序,其在多个视图上的导航层次结构看起来像这样:

[地点列表] -> [一个地方的详细信息] -> [地图]

在地图上,不仅会显示之前选择的地点,还会显示【地点列表】中已知的所有地点。用户应该能够在地图上选择另一个地点并显示其详细信息。可以从地图中打开 [Detail of one place] 的另一个实例,但这样视图堆栈会变得越来越长。我认为最好返回完整的导航层次结构并从 [List of Places] 中打开另一个 [Detail of one place]。

返回:【地图】->【一处详情】->【地点列表】->【一处详情】

但是,我不确定如何最巧妙地实施这种方法。我可以使用

self.presentationMode.wrappedValue.dismiss()

并一一关闭每个视图并返回导航。然后,我会从 [地点列表] 自动切换到另一个详细信息视图。到目前为止,我还没有尝试过,但我想如果我这样做,我会为每个关闭的视图获得一个动画。我不希望你这样做。从地图切换到细节应该像普通导航一样工作。

4

1 回答 1

0

在我看来,如果用户可以从 [一个地方的详细信息] 到 [地图] 以及从 [地图] 到 [一个地方的详细信息],那么您实际上并没有视图层次结构。

鉴于此,最好创建一个新视图,根据用户操作显示 [Detail of one place] 或 [Map] 内容,并隐藏另一个。如果我们将此新视图称为 [Combined],那么您的视图层次结构将变为:

[地点列表] -> [合并]

用户将从 [List of Places] 导航到 [Combined]。默认情况下,[Combined] 会显示一个地方的详细信息。用户会点击那里的一些按钮来查看地图。[合并] 会隐藏一个地方的细节,并显示地图,但堆栈上不会有导航。

如果用户点击地图上的不同地点,[Combined] 将隐藏地图并显示该地点的详细信息。这样,用户可以在细节和地图之间无缝切换。

于 2020-05-19T17:20:33.703 回答