SwiftUI 在 tvOS 中实现 Master 和 Detail 结构
SwiftUI achieve Master and Detail structure in tvOS
Master和Detail结构的实现方式,从beta 4开始,应该是使用.navigationViewStyle(.doubleColumn)。在 iOS / iPadOS / macOS 上完美运行,但在 tvOS 上不行...这是一个错误还是我遗漏了什么?
import SwiftUI
struct ContentView: View {
var arra = ["Margherita","Marinara","Calzone"]
var body: some View {
NavigationView {
List(arra, id: \.self) { pizza in
NavigationLink(destination: SecondView(pizza: pizza)) {
Text(pizza)
}
}.navigationBarTitle("MASTER")
SecondView(pizza: arra[0])
}
.navigationViewStyle(.doubleColumn)
}
}
struct SecondView: View {
var pizza : String
var body: some View {
Text(pizza)
.navigationBarTitle("DETAIL")
}
}
(截至 GM 发布)官方文档这样说:双列样式将在 tvOS 上堆叠,就像在纵向模式下的 iPhone。所以不可能自动实现 "master and detail" 看起来像横向的 iPad ,你必须自己构建它。即使你在 UIKit 中使用一个 UISplitViewController!对于这种行为,我认为只有当 master 是全屏 CollectionView 时才可以使用,有点像 Netflix App。
Master和Detail结构的实现方式,从beta 4开始,应该是使用.navigationViewStyle(.doubleColumn)。在 iOS / iPadOS / macOS 上完美运行,但在 tvOS 上不行...这是一个错误还是我遗漏了什么?
import SwiftUI
struct ContentView: View {
var arra = ["Margherita","Marinara","Calzone"]
var body: some View {
NavigationView {
List(arra, id: \.self) { pizza in
NavigationLink(destination: SecondView(pizza: pizza)) {
Text(pizza)
}
}.navigationBarTitle("MASTER")
SecondView(pizza: arra[0])
}
.navigationViewStyle(.doubleColumn)
}
}
struct SecondView: View {
var pizza : String
var body: some View {
Text(pizza)
.navigationBarTitle("DETAIL")
}
}
(截至 GM 发布)官方文档这样说:双列样式将在 tvOS 上堆叠,就像在纵向模式下的 iPhone。所以不可能自动实现 "master and detail" 看起来像横向的 iPad ,你必须自己构建它。即使你在 UIKit 中使用一个 UISplitViewController!对于这种行为,我认为只有当 master 是全屏 CollectionView 时才可以使用,有点像 Netflix App。