car*_*ram 6 landscape uisplitviewcontroller ios navigationview swiftui
我正在使用 NavigationView 和 NavigationLinks 从 MasterView 移动到 Detail1View,然后进一步移动到 Detail2View。
在处于纵向模式的 iPhone 上,所有细节视图都会显示后退按钮,并允许从 Detail2View 向后移动到 Detail1View,然后进一步移动到 MasterView。
但是在横向模式的 iPhone 或 iPad 上,当从 Detail1View 移动到 Detail2View 时,没有后退按钮。因此不可能回到Detail1View。
添加第二个 NavigationView 允许有一个后退按钮,但这并不是一个理想的解决方法,因为第二个 UINavigationViewController 显示在第一个下方。
struct MyMasterView: View {
private let names = ["Homer", "Marge", "Bart", "Lisa"]
var body: some View {
List() {
Section(header: Text("The Simpsons")) {
ForEach(names, id: \.self) { name in
NavigationLink(destination: MyDetail1View(name: name)) {
Text(name)
}
}
}
}
.navigationBarTitle(Text("My App"))
}
}
struct MyDetail1View: View {
var name: String
var body: some View {
//NavigationView {
List {
NavigationLink(destination: MyDetail2View(name: name)) {
Text("Hello \(name)")
}
}
.navigationBarTitle(Text("Details 1"))
//}
}
}
struct MyDetail2View: View {
var name: String
var body: some View {
HStack {
Text("\(name), I'm sorry but in Landscape there is no back button...")
}
.navigationBarTitle(Text("Details 2"))
}
}
struct ContentView : View {
var body: some View {
NavigationView {
MyMasterView()
Text("In Landscape, swipe to start...")
}
}
}
Run Code Online (Sandbox Code Playgroud)
答案原来就像使用一样简单isDetailLink()!
NavigationLink(destination: MyDetail2View(name: name)) {
Text("Hello \(name)")
}.isDetailLink(false)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |