当俱乐部有人试图在我的应用程序中删除俱乐部时,我正在尝试添加AlertView。
func createAlert() {
let sheet = UIAlertController(title: "Diesen Verein löschen?", message: "Wollen Sie diesen Verein für immer löschen?", preferredStyle:.alert)
present(sheet, animated: true, completion: nil)
let action1 = UIAlertAction(title: "Löschen", style: .default , handler: { (action) in
self.deleteClub(at: IndexPath)
})
let action2 = UIAlertAction(title: "Abbrechen", style: .default, handler: { (action) in
self.dismiss(animated: true, completion: nil)
})
}
但是我不能这样做,因为带有self.deleteClub(at:IndexPath)的行抛出错误。我也不能使用indexPath做到这一点。 我很想搜索这个问题,但是什么也找不到。
那是我的deleteClub函数:
func deleteClub(at indexPath: IndexPath){
let club = clubs[indexPath.row]
guard let managedContext = club.managedObjectContext else {
return
}
managedContext.delete(club)
do {
try managedContext.save()
clubs.remove(at: indexPath.row)
tableViewClub.deleteRows(at: [indexPath], with: .automatic)
} catch {
print("Could not delete")
tableViewClub.reloadRows(at: [indexPath], with: .automatic)
}
}
答案 0 :(得分:1)
像这样更改createAlert
方法的定义:
func createAlert(_ indexPath: IndexPath) {
let sheet = UIAlertController(title: "Diesen Verein löschen?", message: "Wollen Sie diesen Verein für immer löschen?", preferredStyle: .alert)
let action1 = UIAlertAction(title: "Löschen", style: .destructive , handler: { (action) in
self.deleteClub(at: indexPath)
})
let action2 = UIAlertAction(title: "Abbrechen", style: .cancel, handler: nil)
sheet.add(action1)
sheet.add(action2)
present(sheet, animated: true, completion: nil)
}
到a)将操作添加到警报中,并b)从“Löschen”操作中调用self.deleteClub(at: indexPath)
(注意使用小写indexPath
参数而不是大写IndexPath
类型名称)
当然,您必须将表或集合单元的indexPath传递给此方法。
答案 1 :(得分:-1)
您是否尝试在indexPath(.row
)之后添加indexPath.row
?