Neue Liste in SwiftUI?
Ich möchte eine neue Liste unter meine Liste hinzufügen für ein neuen Bereich, allerdings blicke ich nicht warum es nicht geht. Einfach ein neues "List"-Element hinzufügen bringt es nicht. Ich glaube das Problem liegt in der NavigationView, da bin ich mir aber auch nicht sicher.
Kann mir jemand dabei helfen?
Hier ist mein Code und ein Bild von der Ansicht:
import SwiftUI
struct ContentView: View {
@State private var searchText = ""
var body: some View {
VStack{
NavigationView{
List{
Group{ NavigationLink("Geschwindigkeit",
destination: Velocity())
NavigationLink("Strecke",
destination: Strecke())
NavigationLink("Beschleunigung",
destination: acceleration())
}
NavigationLink("Frequenz",
destination: Frequenz())
NavigationLink("Kreisfrequenz",
destination: Kreisfrequenz())
NavigationLink("Thomson´sche Schwingungsgleichung",
destination: Thomson())
NavigationLink("Periodendauer",
destination: Periodendauer())
NavigationLink("Schwingungsdauer eines Fadenpendels",
destination: Fadenpendel())
NavigationLink("Gewichtskraft",
destination: Gewichtskraft())
NavigationLink("Elektrischer Widerstand",
destination: ElekWiderstand())
NavigationLink("Eigenfrequenz eines Dipols",
destination: DipolFrequenz())
}
.navigationTitle("Physik")
.navigationBarTitleDisplayMode(.automatic)
.navigationViewStyle(.stack)
.navigationViewStyle(StackNavigationViewStyle())
}
}
}
}
1 Antwort
Erkläre doch mal genau, was beim Anklicken eines Punktes passieren soll? Mit NavigationLink wird eine neue View aufgerufen, die auch wieder eine List haben kann.
Hier noch mal ein erweitertest Beispiel mit Screenshot (in den Kommentaren geht das nicht).
var body: some View {
NavigationView {
List {
Section("Physik") {
NavigationLink("Geschwindigkeit") {
Text("Geschwindigkeit")
}
NavigationLink("Strecke") {
Text("Strecke")
}
NavigationLink("Beschleunigung") {
Text("Beschleunigung")
}
}
Section("Chemie") {
NavigationLink("Formeln") {
Text("Formeln")
}
}
Section {
NavigationLink("Bäume") {
Text("Bäume");
}
NavigationLink {
Text("Schildkröten")
} label: {
Label("Schildkröten", systemImage: "tortoise")
}
} header: {
Label("Biologie", systemImage: "leaf")
}
}
}
.navigationTitle("Fächer")
.navigationBarTitleDisplayMode(.automatic)
.navigationViewStyle(StackNavigationViewStyle())
}

Du kannst nicht so ohne weiteres mehrere Listen auf eine View bringen. Jede Liste ist eine Scrollview und da gibt es nur Probleme, diese zu mischen.
Für so eine Unterteilung sind aber Sections da, die du schon bei dem Beispiel mit der Berechnung gesehen hast. Damit kannst du so was einfach logisch gruppieren.
var body: some View {
NavigationView {
List {
Section("Physik") {
NavigationLink("Geschwindigkeit") {
Text("Geschwindigkeit")
}
NavigationLink("Strecke") {
Text("Strecke")
}
NavigationLink("Beschleunigung") {
Text("Beschleunigung")
}
}
Section("Chemie") {
NavigationLink("Formeln") {
Text("Formeln")
}
}
}
}
.navigationViewStyle(StackNavigationViewStyle())
.navigationTitle("Fächer")
}
Du rettest mein Gehirn wieder…Tausendfacher Dank an dich
Ja, über diese Liste öffnet sich halt eine neues View, in welcher man diverse Sachen berechnen soll. Nun möchte ich aber unter der aktuellen Liste darunter eine neue haben wo man z.B Chemie-Formeln hat. Ich würde es ja gerne unter diesem Thread verbindlichen, allerdings kann ich keine Bilder hier hochladen.
Ich hoffe das du mir soweit folgen konntest. Vielleicht bin ich ja das alles schon von der Struktur komplett falsch angegangen, weshalb ich nicht weiterkomme, in JavaScript ist es mir halt auch passiert das es theoretisch funktioniert hätte aber die Struktur wie ich es Gestalten habe einfach suboptimal war.