如何通过IBAction使用动画从tableView中删除单元格?iOS Swift 3.0

Bar*_*lka 3 iphone uitableview uiview ios swift

我正在构建一个待办事项列表应用程序,并且在我的视图控制器中持有一个任务模型数组和tableView。

该tableView中的每个单元格包含几个UI元素,其中一个是实际上是一个复选框的UIView,由Skyscanner的pod实现:https : //github.com/Marxon13/M13Checkbox

当用户点击复选框(带有动画)时,我想删除一个单元格。

我为UIView设置了IBAction,我知道要删除数组中的哪个元素(我给每个UIView都加了标签),但是我不能使用该方法

tableView.deleteRows(at: [IndexPath], with: UITableViewRowAnimation)
Run Code Online (Sandbox Code Playgroud)

因为我没有索引路径。我想找到一种删除带有索引的单元格的好方法,最好不要持有indexPath变量(我尝试过但不知道如何正确实现它,因为可以从各种索引中删除单元格)。

谢谢你的帮助!

Bar*_*lka 6

谢谢大家的帮助!我正在回答自己的问题,因为这是您回答的结合!

正如Puneet Sharma,Reinier Melian和Chen Yun所说,我设法在函数内部创建了一个索引路径。Puneet的注释非常重要,必须删除单元格之前从数组中删除元素。

PS。也许我甚至可以在问问题之前创建IndexPath方式,但是

self.tableView.deleteRows(at: [IndexPath(row: checkbox.tag, section: 0)], with: .automatic)
Run Code Online (Sandbox Code Playgroud)

Xcode根本不会自动完成此初始化。

这是删除单元格的代码,就像我想要的那样:

       @IBAction func completeBtnPressed(_ sender: Any) {
    let checkbox = (sender as! M13Checkbox)
    self.tasks.remove(at: checkbox.tag)

    self.tableView.deleteRows(at: [IndexPath(row: checkbox.tag, section: 0)], with: .automatic)
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!