SwiftUI ForEach Statement mit unterschiedlichen NavLinks?
Hey, folgendes:
switch selectedIndex {
case 0:
View0()
case 1:
View1()
default:
View2()
}
ForEach(0..<3) { in num
NavigationLink(destinaiton: /*selectedIndex = num*/) {
/*.....*/
}
}
So in der Richtung würde ich es gerne machen aber das einzige, was bei der Methode rumkommt, ist ein Syntax err.
Danke im voraus
1 Antwort
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, Technik, programmieren
Du kannst die Views in ein Array packen und über dieses iterieren.
private let linkTargets: [View] = [
View0(),
View1(),
View2()
]
var body: some View {
ForEach(linkTargets) { linkTarget in
NavigationLink(destination: linkTarget)
}
}
Wenn jeder Link noch einen eigenen Text erhalten soll, könnte man Text und View stattdessen in einem struct kapseln:
private struct Link {
let target: View
let title: String
}
und das Array mit Objekten dieses Typs füllen. Innerhalb der Schleife würde man dann natürlich auf die einzelnen Felder des aktuellen Eintrags zugreifen.
Allerdings würde ich das gesamte Vorgehen auch einmal hinterfragen, denn wenn du diese drei Links einfach so ohne Schleife o.ä. hintereinander schreiben würdest, bräuchtest du nur drei Zeilen Code.