In the old style of NavigationView I was able to assign manually each view in a Navigation Link. However in iOS16 I don't know how to pass a list of view [MovieTitles(),Literature(),TrafficLights(), HistoryChannel()] in Navigation Destination. I think the problem is the struct TitleLinkPage that builds the array
//struct to build the list Name of language and page
struct TitleLinkPage: Identifiable, Hashable {
var id = UUID ()
let pageView: any View
let nameItem: String
}//End struct TitleLangPage
The entire code here:
import SwiftUI
struct ContentView: View {
let titleLink: [TitleLinkPage] = [
.init(pageView: MovieTitles(), nameItem: "See Movies"),
.init(pageView: Literature(), nameItem: "Visit Literature"),
.init(pageView: TrafficLights(), nameItem: "Traffic Information"),
.init(pageView: HistoryChannel(), nameItem: "See History"),
]
var body: some View {
VStack {
Text("Welcome to our page")
NavigationStack {
List (titleLink) { selectedItem in
NavigationLink(selectedItem.nameItem, value: selectedItem)
}//End List
.navigationDestination(for: TitleLinkPage.self) { selectedItem in
selectedItem.pageView
}
}
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
//struct to build the list Name items and pageView
struct TitleLinkPage: Identifiable, Hashable {
var id = UUID ()
let pageView: any View
let nameItem: String
}//End struct TitleLangPage