App: NFC-Fehler kurz statt "Stack Error", Knopf weg nach Erfolg

Apples localizedDescription kam unveraendert durch und lieferte beim
Beschreiben von Tags wiederholt "Stack Error" - ein Text, der niemandem
sagt, was zu tun ist. Jetzt uebersetzt NFCDienst.kurz die CoreNFC-Codes
in kurze Meldungen ("Tag zu frueh entfernt.", "NFC gerade belegt."); ein
unbekannter Code behaelt seine Nummer, damit der fehlende Fall beim
naechsten Auftreten feststeht.

Die Meldung steht jetzt auch in Apples Systemblatt: im Fehlerfall wurde
die Sitzung wortlos beendet, deshalb las man sie erst danach in der App.

Nach einem erfolgreichen Schreibvorgang verschwinden Knopf und
Schreibschutz-Schalter - sie standen vorher weiter da und waren aktiv,
ein weiterer Tipp hat das Tag ein zweites Mal beschrieben. Stattdessen
steht dort jetzt "Fertig".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-20 21:41:35 +02:00
co-authored by Claude Opus 5
parent 04f8c1fccd
commit 8c752e3d1f
2 changed files with 79 additions and 25 deletions
+26 -16
View File
@@ -33,30 +33,40 @@ struct NFCSchreibenView: View {
Text("Auf das Tag wird geschrieben: \(nutzlast)")
}
Section {
Toggle("Tag dauerhaft schreibschützen", isOn: $sperren)
} footer: {
if sperren {
Text("Das lässt sich nicht rückgängig machen. Das Tag gehört danach "
+ "für immer zu diesem Einzelstück und kann nicht neu beschrieben werden.")
.foregroundStyle(.orange)
} else {
Text("Ohne Schreibschutz kannst du das Tag später einem anderen "
+ "Einzelstück zuweisen.")
// Nach dem Erfolg hat das Tag seinen Inhalt. Knopf und Schalter
// stehenzulassen hiesse, es noch einmal beschreiben zu wollen.
if !erfolg {
Section {
Toggle("Tag dauerhaft schreibschützen", isOn: $sperren)
} footer: {
if sperren {
Text("Das lässt sich nicht rückgängig machen. Das Tag gehört danach "
+ "für immer zu diesem Einzelstück und kann nicht neu beschrieben werden.")
.foregroundStyle(.orange)
} else {
Text("Ohne Schreibschutz kannst du das Tag später einem anderen "
+ "Einzelstück zuweisen.")
}
}
}
Section {
Button(laeuft ? "Tag anhalten…" : "Tag beschreiben") {
Task { await schreiben() }
Section {
Button(laeuft ? "Tag anhalten…" : "Tag beschreiben") {
Task { await schreiben() }
}
.disabled(laeuft)
}
.disabled(laeuft)
}
if erfolg {
Section {
Label("Tag beschrieben.", systemImage: "checkmark.circle")
Label(sperren ? "Tag beschrieben und gesperrt." : "Tag beschrieben.",
systemImage: "checkmark.circle")
.foregroundStyle(.green)
// Hier ist nichts mehr zu tun; „Fertig" gehoert deshalb in
// den Inhalt und nicht nur oben in die Leiste. Ohne das
// stuende man im Anlege-Ablauf vor einem fast leeren Blatt.
Button("Fertig") { if let onFertig { onFertig() } else { dismiss() } }
.buttonStyle(.borderedProminent)
}
}
if let fehler {