在我的应用程序中,我有几种情况,每种情况下都显示不同的UIAlertController
,因此我创建了一个函数来显示此警报,但似乎无法在“okAction”内部调用self.Function。我收到此错误:
这是代码:
func showAlertController( titleOfAlert: String, messageOfAlert : String, doAction : () )
{
let refreshAlert = UIAlertController(title: titleOfAlert, message: messageOfAlert, preferredStyle: .Alert)
let okAction = UIAlertAction(title: "Save", style: UIAlertActionStyle.Default) {
UIAlertAction in
self.doAction()
}
let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Default) {
UIAlertAction in
}
refreshAlert.addAction(okAction)
refreshAlert.addAction(cancelAction)
self.presentViewController(refreshAlert, animated: true, completion: nil)
}
这是我正在调用的功能之一:
func changeLabel1()
{
label.text = "FOR BUTTON 1"
}
我该如何解决?
最佳答案
self
前面的doAction()
,因为您不对对象self调用操作。 Invalid use of '()' to call a value of non-function type '()'
。之所以如此,是因为doAction
是没有功能的,而是一个空的元组。函数具有输入参数和返回类型。因此doAction
的类型应为() -> Void
-它不输入任何内容并返回Void
,即不返回任何内容。 代码应如下所示:
func showAlertController( titleOfAlert: String, messageOfAlert : String, doAction : () -> Void ) {
...
let okAction = UIAlertAction(title: "Save", style: UIAlertActionStyle.Default) { action in
doAction()
}
...
}
如果要将
action
传递给doAction
方法,则必须将类型更改为(UIAlertAction) -> Void
并通过doAction(action)
调用它。