У меня есть кнопка, созданная в моем Main.storyboard
, которая имеет имя (var
) по имени deleteButton
. Эта кнопка находится в каждой ячейке.Ошибка: невозможно преобразовать значение типа '(_, _) -> Void' в ожидаемый тип аргумента '((UIAlertAction) -> Void)?'
Когда пользователь нажимает кнопку, появляется предупреждение, подтверждающее удаление. Вот код.
@IBAction func deletePinpoint(sender: UIButton) {
let alertController = UIAlertController(title: "Delete pinpoint", message: "Do you want to delete this pinpoint?", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Yes", style: UIAlertActionStyle.Default, handler: { (action, indexPath) -> Void in
if let managedObjectContext = (UIApplication.sharedApplication().delegate as? AppDelegate)?.managedObjectContext {
let pinpointToDelete = self.fetchResultController.objectAtIndexPath(sender.tag) as! Pinpoints
managedObjectContext.deleteObject(pinpointToDelete)
do {
try managedObjectContext.save()
} catch {
print(error)
}
}
}))
alertController.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
}
В методе cellForRowAtIndexPath:
я объявил эту строку:
cell.deleteButton.tag = indexPath.row
Я получаю ошибку на 3-й линии (начиная с alertController.addAction
) сказал:
Cannot convert value of type '(_, _) -> Void' to expected argument type '((UIAlertAction) -> Void)?'
Как я почини это?
Это ошибка, то идет, и я получаю ошибку на '(sender.tag)' говоря ** Невозможно преобразовать значение типа «Int» до ожидаемого типа аргумента «NSIndexPath» **. –
вам нужно создать объект NSIndexPath для перехода к objectAtIndexPath. пусть indexPath = NSIndexPath (forRow: sender.tag, inSection: 0), затем установите путь indexAtIndexPath (indexPath) – Sebastian
Отлично! Это работает :)) –