App: "Einzelstuecke anlegen" schloss sich beim ersten Mal sofort wieder

Artikel oeffnen, "Einzelstuecke anlegen" tippen - das Blatt ging kurz auf und
sofort wieder zu. Erst der zweite Versuch hielt. Danach blieb es stabil, bis
man den Artikel neu oeffnete.

Das Blatt hing an der Section, nicht am Formular. Genau davor warnt
ProductDetailView:368 seit laengerem im eigenen Kommentar - die Mengen-Sheets
wurden deshalb schon auf die Form-Ebene gelegt. Fuer die Einzelstuecke wurde
das nie nachgezogen.

Jetzt gibt ProductItemsSection das Blatt nach oben ab: Die Bindung gehoert
ProductDetailView, gezeigt wird es neben den Mengen-Sheets. Weil damit der
Rueckruf in den Abschnitt wegfaellt, bekommt er einen Nachlade-Zaehler - die
Elternansicht zaehlt ihn nach dem Anlegen hoch, und die Liste frischt auf.

Im Simulator vorher reproduziert und nachher geprueft: Erster Tipp nach dem
Oeffnen laesst das Blatt stehen, und ein angelegtes Stueck erscheint sofort
in der Liste ("Einzelstuecke (1)").

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-17 19:30:48 +02:00
co-authored by Claude Opus 5
parent 9f5d0a2310
commit 04f8c1fccd
2 changed files with 30 additions and 10 deletions
+18 -1
View File
@@ -46,6 +46,9 @@ struct ProductDetailView: View {
// Mengen-Bestand (Menge je Lagerort): Sheet + Entnahme-Statistik werden hier
// gehalten und auf Form-Ebene präsentiert, damit das Sheet stabil aufgeht.
@State private var objectSheet: ObjectStockSheet?
@State private var itemsAnlegen = false
/// Hochzaehlen laesst den Einzelstueck-Abschnitt neu laden.
@State private var itemsNachladen = 0
@State private var objectRemovals: RemovalSummary?
private let labels = ["", "Glas", "Tüte", "Flasche", "Dose", "Tube", "Becher", "Beutel", "Karton"]
@@ -98,7 +101,9 @@ struct ProductDetailView: View {
if current.isObject && current.isIndividual {
ProductItemsSection(product: current, onChanged: { await reload() },
onFinish: { dismiss() })
onFinish: { dismiss() },
nachladen: itemsNachladen,
anlegen: $itemsAnlegen)
} else if current.isObject && !current.isBulk {
// Menge je Lagerort (Verbrauchsgegenstände laufen als Charge, s.u.).
ObjectStockSection(product: current, locations: locations, lots: lots,
@@ -365,6 +370,18 @@ struct ProductDetailView: View {
}
}
}
// Aus demselben Grund wie die Mengen-Sheets darunter: aus dem Abschnitt
// heraus gezeigt, schloss sich dieses Blatt beim ersten Oeffnen sofort
// wieder und hielt erst beim zweiten Versuch.
.sheet(isPresented: $itemsAnlegen) {
NavigationStack {
ItemAddSheet(
productId: current.id,
onDone: { itemsNachladen += 1; await reload() },
onFinish: { itemsAnlegen = false; dismiss() }
)
}
}
// Mengen-Sheets auf der stabilen Form-Ebene (nicht im Abschnitt), sonst
// schloss sich das Fenster beim ersten Öffnen sofort wieder.
.sheet(item: $objectSheet) { welche in