SwiftUI - CustomAlertView - 运行 带有按钮按下参数的函数

SwiftUI - CustomAlertView - Run function with parameters on Button press

我有一个带有以下参数的 CustomAlertView:

    public var title: String
    public var buttonText: String
    public var buttonAction: (() -> ())?

...通过以下方式调用专用函数:

Button(action: {buttonAction() })

我可以运行 代码和任何功能,如下

   customAlert = CustomAlertView(title: "Item found",
                                      buttonText: "Take it",
                                      buttonAction: closePopup
        )

    showCustomAlert = true

...

  func closePopup() { showCustomAlert = false }

我想添加一些带有参数的函数,例如

 closePopupAndGetItemWithID(1)

但我不能给他们打电话,上面写着:

Cannot convert value of type '()' to expected argument type '(() -> ())?'

我需要如何转换 CustomAlertView 中的 var 以允许带参数和不带参数的函数?

谁能解释一下这是什么意思:(() -> ())?

您可以创建一个新的闭包来调用带有参数的函数:

CustomAlertView(
   title: "Item found",
   buttonText: "Take it",
   buttonAction: { closePopupAndGetItemWithID(1) }
)

关于你的第二个问题:

can anyone explain what this means: (() -> ())?

它是 Swift 中闭包的类型注释。第一个 () 是闭包的参数(在这种情况下没有参数)。第二个是 return 值——您很可能在其他代码库中将其视为 Void。然后,它被括在括号中以将其分组为一个语句,并且 ? 使其成为可选的。

补充阅读: