【发布时间】:2021-09-26 13:15:15
【问题描述】:
我正在尝试在 Button 上创建一个扩展,以在使用系统映像创建它们时减少样板。
extension Button {
init(_ systemName: String, action: @escaping () -> Void) {
self.init {
action()
} label: {
Image(systemName: systemName) // <-- Error
}
}
}
这会导致以下编译器错误:
无法将“图像”类型的值转换为闭包结果类型“标签”
查看Button 的初始化程序,我看到它是这样声明的:
struct Button<Label> : View where Label : View {
init(action: @escaping () -> Void, @ViewBuilder label: () -> Label) { ... }
}
但同样指定我的扩展名也不起作用。我哪里错了?
extension Button where Label : View {
【问题讨论】:
-
也许只是创建一个自定义视图类