Swiftui 如何将一个动作传递到视图中,并以按钮的动作调用它?
我创建了一个ButtonView,我可以在初始化视图时传入文本和颜色来设置按钮的样式。但是我还想将一个按钮操作传递到ButtonView的初始值设定项中,并将其分配给按钮的操作。我该怎么做Swiftui 如何将一个动作传递到视图中,并以按钮的动作调用它?,swiftui,Swiftui,我创建了一个ButtonView,我可以在初始化视图时传入文本和颜色来设置按钮的样式。但是我还想将一个按钮操作传递到ButtonView的初始值设定项中,并将其分配给按钮的操作。我该怎么做 struct ButtonView: View { var buttonText: String var buttonColor: Color var ACTION_DELEGATE_WANT_TO_DEFINE: Action var body: some View { Button(a
struct ButtonView: View {
var buttonText: String
var buttonColor: Color
var ACTION_DELEGATE_WANT_TO_DEFINE: Action
var body: some View {
Button(action:
**ACTION I WAS TO PASS**
) {
Text(buttonText)
.foregroundColor(buttonColor)
}
.padding(EdgeInsets(top: 10, leading: 20, bottom: 10, trailing: 20))
.overlay(
RoundedRectangle(cornerRadius: 15)
.stroke(buttonColor, lineWidth: 1)
)
}
}
我想创建如下视图:
ButtonViewbuttonText:Review应用程序,buttonColor:.red,action:MyAction按钮操作只是一个闭包,不接受任何参数,也不返回任何内容:-->Void 您可以将其设置为自定义结构上的参数
struct ButtonView: View {
var buttonText: String
var buttonColor: Color
var actionClosure: () -> Void
var ACTION_DELEGATE_WANT_TO_DEFINE: Action
var body: some View {
Button(action:
actionClosure()
) {
Text(buttonText)
.foregroundColor(buttonColor)
}
.padding(EdgeInsets(top: 10, leading: 20, bottom: 10, trailing: 20))
.overlay(
RoundedRectangle(cornerRadius: 15)
.stroke(buttonColor, lineWidth: 1)
)
}
}
非常感谢。我自己也得出了这个答案。@visc很高兴你得到了解决!