在美食车应用程序Apple Food Truck App中,Content View有一个指向iPadOS的NavigationSplitView.
NavigationSplitView {
Sidebar(selection: $selection)
} detail: {
NavigationStack(path: $path) {
DetailColumn(selection: $selection, model: model)
}
}
...
我想要更改这一点,以删除NavigationSplitView,使其仅针对iOS.大概是这样的:
NavigationStack(path: $path) {
Sidebar(selection: $selection)
.navigationDestination(for: Panel.self) { panel in
DetailColumn(selection: $selection, model: model)
}
}
...
这有几个问题--第一个问题是没有导航.通过删除Sidecar()中的$SELECTION修复此问题.第二个问题是,当应用程序导航时,它只能导航到".truck".要解决这个问题,我必须进入DetailColumn,将 Select 更改为@State,并将上面的代码更改为:
NavigationStack(path: $path) {
Sidebar(selection: $selection)
.navigationDestination(for: Panel.self) { panel in
DetailColumn(selection: panel, model: model)
}
}
...
尽管这很有效,但Xcode确实抱怨说,"在堆栈的前面声明了"Food_Truck.Panel"的NavigationDestination.只会使用声明的最接近堆栈根视图的目的地."
我认为我对如何处理这一点缺乏一些理解,或者这款应用的设计是为了让它与NavigationSplitView一起工作,而不是直接与NavigationStackView一起工作.
先谢谢你.