【发布时间】:2020-01-13 05:29:31
【问题描述】:
我的应用有简单的导航需求
- 列表视图(父对象)
- 列表视图(子对象)
- 详细视图(子对象)
我有这个设置并且在 iPhone 上工作,但是当我在 iPad 上以纵向模式运行应用程序时,主列表总是隐藏的。
我在从第一个列表到第二个列表的导航链接上使用.isDetailLink(false),因此两个列表始终保留在主列中。在 iPad 横向中,一切都按预期工作,但在纵向中,详细视图会填满屏幕。我可以从屏幕左侧滑入以显示列表,但我想为用户提供更清晰的信息。
我想显示或添加后退按钮以显示主/列表端(有点像 Apple Notes 应用程序)。在 iPhone 上,我默认获得返回按钮,但在纵向模式下的 iPad 上,它的位置没有任何内容。
家长名单
struct ParentList: View {
let firstList = ["Sample data 01", "Sample data 02", "Sample data 03", "Sample data 04", "Sample data 05"]
var body: some View {
NavigationView {
List{
ForEach(firstList, id: \.self) { item in
NavigationLink(destination: ChildList()){
Text(item)
}
.isDetailLink(false)
}
}
}
}
}
子列表
struct ChildList: View {
let secondList = ["More Sample data 01", "More Sample data 02", "More Sample data 03", "More Sample data 04", "More Sample data 05"]
var body: some View {
List{
ForEach(secondList, id: \.self) { item in
NavigationLink(destination: ChildDetail()){
Text(item)
}
}
}
}
}
儿童详情
struct ChildDetail: View {
var body: some View {
Text("Child detail view")
}
}
更新:截至 2019 年 10 月 17 日,我还没有找到让它工作的方法。我决定暂时使用.navigationViewStyle(StackNavigationViewStyle())。有趣的是,这需要像普通修饰符一样位于导航视图的外部,而不是导航标题的内部。
【问题讨论】:
-
我不知道答案,但我在 iPad 上也有同样的行为。基本上,一个 List 在 iPad 上会自动变成一个 SplitView,而在纵向上它似乎隐藏了主视图。我现在没有任何帮助,但也许如果您深入研究可以为列表设置的属性,您可能会找到答案。搜索诸如“iPad”、“master”之类的东西并仔细研究 cmets。祝你好运!