Куда идет пункт назначения навигации в 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
}

0 ответов

Другие вопросы по тегам