我的应用程序具有简单的导航需求
我具有此设置并可以在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)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
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)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
struct ChildDetail: View {
var body: some View {
Text("Child detail view")
}
}
Run Code Online (Sandbox Code Playgroud)
更新:截至2019年10月17日,我还没有找到一种方法来使其工作。我决定.navigationViewStyle(StackNavigationViewStyle())暂时使用。有趣的是,这需要像常规修饰符一样位于导航视图之外,而不是与导航标题一起进入它。
小智 8
还有一个非常hacky的解决方法(参见/sf/answers/4005096511/)
通过将 .padding() 添加到 NavigationView 似乎实现了始终显示 Master 的行为。
NavigationView {
MyMasterView()
DetailsView()
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
.padding()
Run Code Online (Sandbox Code Playgroud)
不确定它是否有意。将来可能会中断(使用 Xcode 11.0,在 iOS 13.0 上的模拟器和具有 13.1.2 的设备中工作)。
你不应该依赖它。这条评论似乎是更好的答案:https : //stackoverflow.com/a/57919024/3187762
纵向模式下,默认拆分视图不起作用。将来可能会修复此问题,但当前的选项可能是:
(a)将第一个列表的导航视图样式更改为.navigationViewStyle(StackNavigationViewStyle(),以便导航将像在iPhone上那样工作并推入每个视图。
(b)将样式保留为默认样式,仅支持iPad横向
(c)实现UIKit拆分视图控制器
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |