Ошибка компилятора Swift: "Тип" Водяной знак "не соответствует протоколу" ViewModifier""
Я хочу добавить ViewModifier, как описано в следующем руководстве Пола Хадсона (https://www.hackingwithswift.com/books/ios-swiftui/custom-modifiers). Мой ViewModifier:
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))
}
}
Но я получаю следующие ошибки:
Я попытался воспроизвести это в другом проекте, но там все работает как положено. Я пробовал уже очистить папку сборки, удалить производные данные, перезапустить Xcode, перезагрузить Mac.
Есть идеи, как решить проблему?
2 ответа
Я сталкивался с этой ошибкой раньше, и как сказал @Asperi, это проблема конфликта имен. Может быть другая сущность, также названная
Content
в проекте.
И изображения для справки:
Я думаю у вас конфликт имен, т.е. есть еще одна сущность с именем
Watermark
в вашем проекте (или видимым из других частей), поэтому постарайтесь сделать этот модификатор уникальным. подобно
struct WatermarkModifier: ViewModifier {
// .. other code
}
extension View {
func watermarked(with text: String) -> some View {
self.modifier(WatermarkModifier(text: text))
}
}