Swiftui 如何将一个动作传递到视图中,并以按钮的动作调用它?

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

我创建了一个ButtonView,我可以在初始化视图时传入文本和颜色来设置按钮的样式。但是我还想将一个按钮操作传递到ButtonView的初始值设定项中,并将其分配给按钮的操作。我该怎么做

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很高兴你得到了解决!