如何将一个动作传递到视图中,并在按钮的动作中调用它?
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)?