Page 1 of 1

Wie greife ich auf Eigenschaften der zugrunde liegenden Ansicht im benutzerdefinierten SwiftUI ViewModifier zu?

Posted: 20 Jan 2025, 14:56
by Guest
Während ich versuche zu erfahren, wie ViewModifiers verwendet werden können, frage ich mich, ob es möglich ist, auf die Eigenschaften der zugrunde liegenden Ansicht innerhalb des Modifikators zuzugreifen:
Zum Beispiel I möchte einen Modifikator .addPrefix("Foo") erstellen, der das Präfix zu einer Textansicht hinzufügt:

Code: Select all

Text("bar")
.addPrefix("Foo: ")

--> shows "Foo: bar"

struct AddPrefixModifier: ViewModifier {
let prefix: String

func body(content: Content) -> some View {
if let textContent = extractText(from: content) {
Text("\(prefix)\(textContent)")
} else {
content
}
}

private func extractText(from content: Content) -> String? {
if let text = content as? Text,
return text.text
} else {
eturn nil
}
}
}

extension Text {
func addPrefix(_ prefix: String) -> some View {
self.modifier(AddPrefixModifier(prefix: prefix))
}
}
Dies funktioniert nicht, da Inhalt nicht in Text umgewandelt werden kann. Wenn es möglich wäre, gibt es keine Eigenschaft, um auf den enthaltenen Text zuzugreifen.
Ist das also überhaupt möglich?