gpt4 book ai didi

ios - Swift - 类型 ViewController 的值没有成员 *functionName*

转载 作者:IT王子 更新时间:2023-10-29 05:48:09 24 4
gpt4 key购买 nike

在我的应用程序中,我有几个场景,每个场景都显示不同的 UIAlertController,因此我创建了一个函数来显示此警报,但我似乎无法在“okAction”中调用 self.Function .我收到此错误:

Value of type 'ViewController' has no member 'doAction'

代码如下:

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"
}

我该如何解决?

最佳答案

  1. 删除 doAction() 前面的 self,因为您不会调用对象 self 上的操作。

  2. 如果你这样做,编译器会告诉你
    无效使用“()”来调用非函数类型“()”的值。这是因为 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) 调用它。

关于ios - Swift - 类型 ViewController 的值没有成员 *functionName*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34470834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com