Я новичок в SwiftUI, я хочу знать, как я могу связать свой список, если кто-то переключит cardView на новое представление SwiftUI, например, как я делал это с раскадровкой и tableView для каждой ячейки, которую я переключаю
struct ScrollViewCont: View {
var body: some View {
ScrollView(.horizontal){
HStack{
ForEach(tabs) { sections in
GeometryReader { geometry in
ScrollViewTabs(
tabText: sections.name,
tabImage: sections.thumbnail
)
.rotation3DEffect(Angle(degrees: (Double(geometry.frame(in: .global).minX) - 210) / -20), axis: (x: 0, y: 1.0, z: 0))
}
.frame(width: 200, height: 250)
.padding()
}
}
}
}
}
Вот пример кода, который позволяет представить различные ScrollViewTabs
,
затем при нажатии «перейти к» другому представлению.
struct ContentView: View {
var tabs = [
TabSection(name: "الحروف العربية", thumbnail: "folder", SubView: "test"),
TabSection(name: "الحروف الانجليزية", thumbnail: "person", SubView: "test2"),
TabSection(name: "الحروف الانجليزية", thumbnail: "globe", SubView: "test2"),
TabSection(name: "الحروف الانجليزية", thumbnail: "info", SubView: "test2"),
TabSection(name: "الحروف الانجليزية", thumbnail: "house", SubView: "test2")
]
@State private var selections: [TabSection] = []
var body: some View {
NavigationStack(path: $selections) {
ScrollView(.horizontal){
HStack{
ForEach(tabs) { section in
GeometryReader { geometry in
ScrollViewTabs(tab: section).border(.green)
.rotation3DEffect(Angle(degrees: (Double(geometry.frame(in: .global).minX) - 210) / -20), axis: (x: 0, y: 0, z: 1.0))
.onTapGesture {
selections = [section]
}
}.frame(width: 200, height: 250).padding()
}
}
}
.navigationDestination(for: TabSection.self) { tab in
OtherView(tab: tab)
}
}
}
}
// for testing
struct OtherView: View {
var tab: TabSection
var body: some View {
Text("OtherView " + tab.name)
}
}
// for testing
struct ScrollViewTabs: View {
@State var tab: TabSection
var body: some View {
Label(tab.name, systemImage: tab.thumbnail)
}
}
struct TabSection: Identifiable, Hashable {
let id = UUID()
var name: String
var thumbnail: String
var SubView: String
}