Widok zidentyfikuję się jak ten kod: structure redview: widok, możliwe do zidentyfikowania {pozwól ID: UUID = UUID () Var Body: Niektóre widoku {Color.red.frame (szerokość: 100, wysokość: 100, ...

0
swiftPunk 20 marzec 2021, 10:14

1 odpowiedź

Najlepsza odpowiedź

Jednym z wymagań ViewModifier jest to, że jesteś w stanie zmodyfikować dowolny widok . Oczywiście, nie możesz tego zrobić w tym przypadku, więc ViewModifier nie jest odpowiedni.

Spróbuj zapisać rozszerzenie na View where Self: Identifiable zamiast tego:

extension View where Self: Identifiable {
    func printId() -> some View  {
        return onAppear() { print(id) }
    }
}

Stosowanie:

struct ContentView: View {

    var body: some View {

        RedView()
            .printId()  // compiles
        
        Text("Hello")
            .printId()  // does not compile
 
    }
}

Porównanie pomiędzy ViewModifier i rozszerzenia

2
Sweeper 20 marzec 2021, 07:51