【发布时间】:2020-04-28 12:47:46
【问题描述】:
我正在尝试创建自己的 Button 版本,方法是将其包装在视图中,从而打开添加更多功能/隐藏样式修饰符的能力。我知道这不会带来好处,而且 ButtonStyles 很强大。但是为了超级干净的代码,我对它是如何实现的很感兴趣。
在它最精简的形式中,我想写一些类似的东西(基于 Button 自己的签名):
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”
【问题讨论】: