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
。然后,它被括在括号中以将其分组为一个语句,并且 ?
使其成为可选的。
补充阅读:
我有一个带有以下参数的 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
。然后,它被括在括号中以将其分组为一个语句,并且 ?
使其成为可选的。
补充阅读: