我不确定这个功能有什么问题。我正在尝试提示用户是否要删除所选照片。
如果删除照片的功能返回错误,我想向用户显示该错误。
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)
}
如果我拿出违规行,那么一切正常,只是用户无法解除警报
答案 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
或类似的名称,或者将其重命名为_
,因为您没有引用它。