IndexPath和indexPath不起作用

时间:2018-06-24 19:31:34

标签: swift xcode uialertview

当俱乐部有人试图在我的应用程序中删除俱乐部时,我正在尝试添加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)
            }
        }

2 个答案:

答案 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