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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将一个动作传递到视图中,并在按钮的动作中调用它?相关的知识,希望对你有一定的参考价值。

我有一个 ButtonView 我可以通过文本和 Color 风格 Button 当我启动 View. 但我也想通过 Button 的初始化器中。ButtonView 的行动,并将其分配给 Button. 我怎么做呢?

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)
        )
    

我想创建这样的视图。

ButtonView(buttonText: "Review App", 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)
        )
    

以上是关于如何将一个动作传递到视图中,并在按钮的动作中调用它?的主要内容,如果未能解决你的问题,请参考以下文章

JSF 2:如何将包含要调用的参数的动作传递给 Facelets 子视图(使用 ui:include 和 ui:param)?

如何将模型动作传递给 Tkinter MVC 中的查看按钮?

从 JSF2 中的操作导航时如何传递视图参数?

如何将带有按钮的视图(目标操作)添加到滚动视图

如何将 segue 标识符添加到以编程方式进行的模态转换?

MVC如何从视图调用控制器中的动作以返回值