Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI中按钮样式的枚举_Swift_Swiftui - Fatal编程技术网

SwiftUI中按钮样式的枚举

SwiftUI中按钮样式的枚举,swift,swiftui,Swift,Swiftui,可以这样设置按钮样式 Button() { } .buttonStyle(.default) 而不是这个 Button() { } .buttonStyle(DefaultButtonStyle()) 我试图编写一个扩展,但它不起作用 extension ButtonStyle { static var `default`: DefaultButtonStyle { DefaultButtonStyle() } } 它说:静态成员'default

可以这样设置按钮样式

Button() { }
   .buttonStyle(.default)
而不是这个

Button() { }
   .buttonStyle(DefaultButtonStyle())
我试图编写一个扩展,但它不起作用

extension ButtonStyle {
    static var `default`: DefaultButtonStyle {
        DefaultButtonStyle()
    }
}

它说:
静态成员'default'不能用于协议元类型'ButtonStyle.protocol'

这里是一个可能方法的演示-使用自己的修饰符和自己的枚举,所以对一切都有完全的控制权

用法

和助手扩展

enum MyButtonStyle {
    case `default`
    case borderless
    // .. extend with any custom here
}

extension Button {

    @ViewBuilder
    func myStyle(_ style: MyButtonStyle) -> some View {
        switch style {
            case .default:
                self.buttonStyle(DefaultButtonStyle())
            case .borderless:
                self.buttonStyle(BorderlessButtonStyle())
           // .. extend with any custom here
        }
    }
}

我已经回答你了。
按钮样式
是通用协议(它有关联的类型)-您不能这样做。我可以问一下-你想在这里做什么当没有提供
.buttonStyle
时,默认情况下它已经是默认值。
default
就是一个例子。最好是有一个.link、.rounded、.bordered、.borderless样式,而不在自动完成中搜索。
enum MyButtonStyle {
    case `default`
    case borderless
    // .. extend with any custom here
}

extension Button {

    @ViewBuilder
    func myStyle(_ style: MyButtonStyle) -> some View {
        switch style {
            case .default:
                self.buttonStyle(DefaultButtonStyle())
            case .borderless:
                self.buttonStyle(BorderlessButtonStyle())
           // .. extend with any custom here
        }
    }
}