Я пытаюсь создать свою собственную версию Button, оборачивая ее в представление и, таким образом, открывая возможность добавлять больше функций / скрывать модификаторы стиля. Я знаю, что это не приносит пользы, и что ButtonStyles являются мощными. Но в интересах суперчистого кода, я заинтригован тем, как его можно достичь.
В его наиболее урезанной форме я хотел бы написать что-то вроде (на основе собственной подписи Баттона):
struct MyCustomButton: View {
let action : () -> Void
let contents : () -> PrimitiveButtonStyleConfiguration.Label
var body : some View {
Button(action: self.action) {
self.contents()
}
}
}
И все же, когда я пытаюсь его использовать ...
struct MyView : View {
var body : some View {
MyCustomButton(action: { doSomething() }) {
Text("My custom button")
}
}
}
... Я получаю следующую ошибку компиляции: Невозможно преобразовать значение типа 'Текст' в закрывающий тип результата 'PrimitiveButtonStyleConfiguration .Label '