Wie greife ich auf Eigenschaften der zugrunde liegenden Ansicht im benutzerdefinierten SwiftUI ViewModifier zu?
Posted: 20 Jan 2025, 14:56
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:
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?
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))
}
}
Ist das also überhaupt möglich?