Куда идет пункт назначения навигации в iOS 16 NavigationSplitView?
Я нашел это отличное видео от Шона Аллена https://www.youtube.com/watch?v=oxp8Qqwr4AY о наличии двух разных структур в , но я не могу понять, как это сделать, если я используюNavigationSplitView
.
Это код, который компилируется, но я получаю консольную ошибку:
NavigationLink представляет значение типа «Игра», но нет соответствующего пункта назначения навигации, видимого из местоположения ссылки. Ссылка не может быть активирована.
Итак, Xcode, кажется, думает, что я должен дать ему пункт назначения для навигации, но где? Или это ограничиваетсяNavigationStack
?
struct ContentView: View {
var platforms: [Platform] = [
.init(name: "Xbox", imageName: "xbox.logo", color: .green),
.init(name: "Playstation", imageName: "playstation.logo", color: .indigo),
.init(name: "PC", imageName: "pc", color: .yellow),
.init(name: "Mobile", imageName: "iphone", color: .mint),
]
var games: [Game] = [
.init(name: "Minecraft", rating: "5"),
.init(name: "Gof of War", rating: "15"),
.init(name: "Fortnite", rating: "25"),
.init(name: "Civ 5", rating: "20"),
]
var body: some View {
NavigationSplitView {
List {
Section("Platforms"){
ForEach(platforms, id: \.name) { platform in
NavigationLink(value: platform){
Label(platform.name, systemImage: platform.imageName)
.foregroundColor(platform.color)
}
}
}
Section("Games"){
ForEach(games, id: \.name) { game in
NavigationLink(value: game) {
Label(game.name, systemImage: "\(game.rating).circle.fill")
}
}
}
}
.navigationTitle("Gaming")
.navigationDestination(for: Platform.self) { platform in
ZStack {
platform.color.ignoresSafeArea()
Label(platform.name, systemImage: platform.imageName)
}
}
.navigationDestination(for: Game.self) { game in
Text("\(game.name) Rating \(game.rating) ")
}
} detail: {
// ???
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Platform: Hashable {
let name: String
let imageName: String
let color: Color
}
struct Game: Hashable {
let name: String
let rating: String
}