无法调用非函数类型UIAlertAction的值

时间:2016-05-28 11:41:38

标签: swift

我不确定这个功能有什么问题。我正在尝试提示用户是否要删除所选照片。

如果删除照片的功能返回错误,我想向用户显示该错误。

Xcode在errorController.addAction行失败,消息“无法调用非函数类型UIAlertAction的值”

我正在使用Swift 2

@IBAction func deletePhoto(sender: AnyObject) {
    let alertController = UIAlertController(title: "Delete Photo", message: "Are you sure you want to delete this photo?", preferredStyle: .Alert)
    let okAction = UIAlertAction(title: "OK", style: .Default) { UIAlertAction in

        self.photoGateway!.delete(self.photo!.id!, completion: { (withError: Bool) -> Void in

            if (withError == true) {
                let errorController = UIAlertController(title: "Delete Failed", message: "blah", preferredStyle: UIAlertControllerStyle.Alert)
                //  The next line is causing the error
                errorController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
                self.presentViewController(errorController, animated: true, completion: nil)
            } else {
                self.dismissViewControllerAnimated(true, completion: nil)
            }

        })

    }

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { UIAlertAction in
        print("Cancelled")
    }

    alertController.addAction(okAction)
    alertController.addAction(cancelAction)
    self.presentViewController(alertController, animated: true, completion: nil)
}

如果我拿出违规行,那么一切正常,只是用户无法解除警报

2 个答案:

答案 0 :(得分:20)

修正了它。改变:

errorController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))

为:

errorController.addAction(UIKit.UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))

答案 1 :(得分:0)

发生这种情况的原因是因为回调的参数称为UIAlertAction(上面的第3和20行),并且这覆盖了UIKit中的声明。这可能是代码完成错误。只需将其重命名为action或类似的名称,或者将其重命名为_,因为您没有引用它。