Je souhaite ajouter un ViewModifier, comme expliqué dans le tutoriel suivant de Paul Hudson (https : //www.hackingwithswift.com/books/ios-swiftui/custom-modifiers). Mon ViewModifier est:

import SwiftUI

struct Watermark: ViewModifier {
    var text: String

    func body(content: Content) -> some View {
        ZStack(alignment: .bottomTrailing) {
            content
            Text(text)
                .font(.caption)
                .foregroundColor(.white)
                .padding(5)
                .background(Color.black)
        }
    }
}

extension View {
    func watermarked(with text: String) -> some View {
        self.modifier(Watermark(text: text))
    }
}

Mais j'obtiens les erreurs suivantes:

enter image description here

J'ai essayé de reproduire cela dans un autre projet, mais là, cela fonctionne comme prévu. J'ai déjà essayé de nettoyer le dossier de construction, de supprimer les données dérivées, de redémarrer Xcode, de redémarrer le Mac.

Des idées sur la façon de résoudre le problème?

1
Jonas Deichelmann 28 oct. 2020 à 19:17

2 réponses

Meilleure réponse

J'ai déjà rencontré cette erreur et comme l'a dit @Asperi, il s'agit d'un problème de conflit de nom. Il peut y avoir une autre entité également nommée Content dans le projet.

Et images pour référence:

1
AlezPG 29 oct. 2020 à 08:04

Je pense que vous avez un conflit de nom, ce est à dire. il existe une autre entité nommée Watermark dans votre projet (ou visible depuis d'autres parties), essayez donc de rendre ce modificateur unique. Comme

struct WatermarkModifier: ViewModifier {
 // .. other code
}

extension View {
    func watermarked(with text: String) -> some View {
        self.modifier(WatermarkModifier(text: text))
    }
}  
3
Asperi 28 oct. 2020 à 16:28