Hallo,
ich habe ein Problem mit dem Refresh eines Pickers in einer App.
Aufbau.:
1. Klasse mit einem String Array, welches komplett gefüllt ist mit 60 Strings.
2. Klasse (UI) ist ein Screen mit einem DatePicker und einem Picker
3. Klasse ist beinhaltet eine Funktion die Daten aus einer Firebase DB holt.
Ablauf:
In der 2. Klasse stelle ich einen Kalender dar. Wenn man einen Tag auswählt, wird in der onChange Methode die Funktion der 3. Klasse mit dem gewählten Tag als Parameter aufgerufen.
Die Funktion liest dann in der DB die vorhandenen Einträge zu diesem Tag aus und modifiziert das String-Array aus Klasse 1. (löscht Objekte aus dem Array, zu denen ein Eintrag in der DB gefunden wurde)
Der Picker in der 2. Klasse gibt über eine ForEach Schleife die Strings des Arrays aus.
Problem:
Das Picker Element wird nicht direkt aktualisiert.. es hängt quasi immer einen Klick hinterher..
Wähle ich zB Tag 25, dann 26, dann 27, bekomme ich bei 26 den Stand vom 25., dann bei 27. den Stand vom 26..
Ich habe bereits versucht, den Ticker über .id zu aktualisieren, mit eine if-else und einem getoggelten Bool Wert den Picker zu updaten.
Bringt alles nichts.
Ich habe auch versucht den Aufruf der Methode in der onChange in einer DispatcherQueue.main.sync zu packen, quasi um einfach zu warten.. aber dann crasht die App komplett, obwohl die DB Abfragen durchgehen.
Als letztes habe ich jetzt die 1. Klasse als ObservableObject deklariert, das Array als @Published und in der 2. Klasse als @StateObject die Klasse eingebunden..
Es bringt alles nichts.. ich hänge immer einen Tag zurück.
Wo genau ist mein Denkfehler? Bekomme ich das irgendwie über saubere @State, @Binding Einstellungen irgendwie hin?
ich habe ein Problem mit dem Refresh eines Pickers in einer App.
Aufbau.:
1. Klasse mit einem String Array, welches komplett gefüllt ist mit 60 Strings.
2. Klasse (UI) ist ein Screen mit einem DatePicker und einem Picker
3. Klasse ist beinhaltet eine Funktion die Daten aus einer Firebase DB holt.
Ablauf:
In der 2. Klasse stelle ich einen Kalender dar. Wenn man einen Tag auswählt, wird in der onChange Methode die Funktion der 3. Klasse mit dem gewählten Tag als Parameter aufgerufen.
Die Funktion liest dann in der DB die vorhandenen Einträge zu diesem Tag aus und modifiziert das String-Array aus Klasse 1. (löscht Objekte aus dem Array, zu denen ein Eintrag in der DB gefunden wurde)
Der Picker in der 2. Klasse gibt über eine ForEach Schleife die Strings des Arrays aus.
Problem:
Das Picker Element wird nicht direkt aktualisiert.. es hängt quasi immer einen Klick hinterher..
Wähle ich zB Tag 25, dann 26, dann 27, bekomme ich bei 26 den Stand vom 25., dann bei 27. den Stand vom 26..
Ich habe bereits versucht, den Ticker über .id zu aktualisieren, mit eine if-else und einem getoggelten Bool Wert den Picker zu updaten.
Bringt alles nichts.
Ich habe auch versucht den Aufruf der Methode in der onChange in einer DispatcherQueue.main.sync zu packen, quasi um einfach zu warten.. aber dann crasht die App komplett, obwohl die DB Abfragen durchgehen.
Als letztes habe ich jetzt die 1. Klasse als ObservableObject deklariert, das Array als @Published und in der 2. Klasse als @StateObject die Klasse eingebunden..
Es bringt alles nichts.. ich hänge immer einen Tag zurück.
Wo genau ist mein Denkfehler? Bekomme ich das irgendwie über saubere @State, @Binding Einstellungen irgendwie hin?