swift 在对示例方法“buttonStyle”的调用中没有完全匹配

q3qa4bjr  于 11个月前  发布在  Swift
关注(0)|答案(1)|浏览(121)

我对编程还是很陌生,请原谅我初学者的错误。
我已经找到了问题所在,但是我自己无法找到。也许你们中的一个可以帮助我,因为我认为问题并不是那么大。当我使用这段代码时,
在对示例方法“buttonStyle”的调用中没有完全匹配
从非协议类型“ButtonStyle”继承
在作用域中找不到类型“Configuration”
消息不断出现。
我该怎么做才能不再收到这些?
问候

import SwiftUI

struct ButtonStyleGuide: View {
var body: some View {
VStack (spacing:30) {
Text("Button Styles")

            Button { } label: {
                Text("small primary button style")
                
            }
            .buttonStyle(SmallButtonStyle)
            
            Button { } label: {
                Text("small primary button - disabled")
            }
            .buttonStyle(SmallButtonStyle())
            .disabled(true)
            
        }
    }

}

struct SmallButtonStyle: ButtonStyle {
@Environment(.isEnabled) var isEnabled

    func makeBody(configuration: Configuration) -> some View {
        configuration.label
            .buttonStyle()
            .foregroundColor(Color.white)
            .background(Capsule().fill(Color("purple-500")))
            .padding(12.5)
            .scaleEffect(configuration.isPressed ? 0.8 : 1)
    }

}

struct ButtonStyleGuide_Previews: PreviewProvider {
static var previews: some View {
ButtonStyleGuide()
}
}

字符串
我已经做了一个YouTube视频,并得到stuc在这一点上。

voj3qocg

voj3qocg1#

通过这些更改,您的代码可以编译和工作:

  • 设置按钮样式时,需要创建SmallButtonStyle的实际示例
  • makeBody中,不要使用修饰符.buttonStyle(它需要提供样式作为参数)
  • 添加一个反斜杠以转义环境值的名称
  • 为了测试代码,我不得不将紫色更改为标准紫色。

这是可行的

import SwiftUI

struct ButtonStyleGuide: View {
    var body: some View {
        VStack (spacing:30) {
            Text("Button Styles")

            Button { } label: {
                Text("small primary button style")
            }
            .buttonStyle(SmallButtonStyle())

            Button { } label: {
                Text("small primary button - disabled")
            }
            .buttonStyle(SmallButtonStyle())
            .disabled(true)
        }
    }
}

struct SmallButtonStyle: ButtonStyle {
    @Environment(\.isEnabled) var isEnabled

    func makeBody(configuration: Configuration) -> some View {
        configuration.label
//            .buttonStyle()
            .foregroundColor(Color.white)
            .background(Capsule().fill(.purple)) // Color("purple-500")
            .padding(12.5)
            .scaleEffect(configuration.isPressed ? 0.8 : 1)
    }
}

字符串


的数据

相关问题