Post

Replies

Boosts

Views

Activity

SwiftUI sheet doesn't work with ForEach
I know that you can't use a sheet inside of a ForEach view but my workaround outputs me most of the time the right index but sometimes just the first. @State private var isEditPresented: Bool = false @State private var cardIndex: Int = 0 var body: some View { ForEach(lesson.cards.indices, id: \.self) { index in Button { cardIndex = index print("edit: \(cardIndex)") isEditPresented = true } //:BUTTON }.sheet(isPresented: $isEditPresented) { EditCardView(cardIndex: cardIndex) } //:FOREACH } //:BODY The print statement outputs: edit: 1 My EditCardView: @State var cardIndex: Int var body: some View { Form { SomeViews() }.onAppear() { print("editView: \(cardIndex)") } //:FORM } //:BODY The interesting thing is that the first print statement is edit: 1 but the print statement from my EditCardView returns editView: 0 Sometimes it works fine and prints: edit: 1 editView: 1 How do I fix that?
2
0
340
Dec ’23
SwiftUI: Cannot find '$lektion' in scope
I want to use a Toggle() but when I give it an isOn Variable it says: Cannot convert value of type 'Bool' to expected argument type 'Binding' When I then try to sign the variable with a $ it says: Cannot find '$lektion' in scope Here is my Code: import SwiftUI import SwiftData struct LektionenView: View { @Environment(\.modelContext) private var modelContext @Query(sort: \Lektion.id) private var lektionen: [Lektion] @State var isPresented: Bool = false var body: some View { List { ForEach(lektionen) { lektion in NavigationLink { VokabelnView(lektion: lektion).navigationTitle("Vokabeln") } label: { Toggle("", isOn: $lektion.isOn) } } .onDelete(perform: deleteItems) }.sheet(isPresented: $isPresented, content: { AddLektionView() }).toolbar { ToolbarItem(placement: .navigationBarTrailing) { EditButton() } ToolbarItem { Button { isPresented = true } label: { Label("Add Item", systemImage: "plus") } } } } private func deleteItems(offsets: IndexSet) { withAnimation { for index in offsets { modelContext.delete(lektionen[index]) } } } } #Preview { ContentView() .modelContainer(for: Lektion.self, inMemory: true) }
2
0
538
Nov ’23
Xcode Preview keeps crashing
Ich bin neu bei Xcode und habe einen Fehler gemacht, bei dem ich nicht weiß, wie ich ihn beheben soll. Das war mein Code zuerst: #Preview { AddLektionView().modelContainer(for: Lektion.self) } und dann habe ich bemerkt, dass er so aussehen sollte: #Preview { AddLektionView().modelContainer(for: Lektion.self, inMemory: true) } Nun stehe ich vor dem Problem, dass die Preview die Daten auf Dauer gespeichert hat und ich beim ändern vom Aufbau der Daten, die gespeichert werden sollen, einen Fehler erhalte, da die neue App eine veraltete Datenstruktur von SwiftData lädt, was der App nicht passt. Daraufhin erhalte ich dann einen Fehler, dass die Daten wegen der unbekannten neuen Variable nicht geladen werden können. Wie kann ich die, von SwiftData geladenen Daten entfernen, sodass die Preview (Canvas) wieder funktioniert? (Eine Neuinstallation von Xcode habe ich schon probiert) Ich danke für jede Hilfe! Mit freundlichen Grüßen Tobias
2
0
617
Nov ’23