gpt4 book ai didi

button - SwiftUI - 在 View 中包装 Button,以创建自定义按钮

转载 作者:行者123 更新时间:2023-12-04 00:57:09 24 4
gpt4 key购买 nike

我正在尝试创建自己的 Button 版本,方法是将其包装在 View 中,从而打开添加更多功能/隐藏样式修饰符的能力。我知道这不会带来好处,而且 ButtonStyles 很强大。但是为了 super 干净的代码,我很想知道它是如何实现的。

在它最精简的形式中,我想写一些类似的东西(基于 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”

最佳答案

想通了:

struct NewButton<Content: View> : View {
let content : ()-> Content
let action: () -> Void

init(@ViewBuilder content: @escaping () -> Content, action: @escaping () -> Void) {
self.content = content
self.action = action
}

var body: some View {
Button(action: self.action) {
content()
}
}
}

关于button - SwiftUI - 在 View 中包装 Button,以创建自定义按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61480547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com