如何通过自定义单元格中的按钮删除具有tableView的本机动画的行?

如何通过自定义单元格中的按钮删除具有tableView的本机动画的行?

问题描述:

我想使用本机tableView动画从自定义单元格中的按钮中删除一个表格行。有人能帮助我吗?如何通过自定义单元格中的按钮删除具有tableView的本机动画的行?

+0

嗨Renato,并欢迎堆栈溢出。你能否更好地解释你想要做什么,并显示你到目前为止的代码。 – boidkan

+0

搜索删除单元格tableview动画 –

+1

相关:https://*.com/questions/40156274/deleting-a-row-from-a-uitableview-in-swift-3 –

我找到了一个很好的解决方案,使用了自定义的代表和 TableViewDataSource方法!

我在我的自定义单元格类具有协议的工作,像这样:

protocol MyCellDelegate: class { 
    func didDelete(cell: MyCell) 
} 

在我的自定义单元格类我做了这个:

class MyCell: UITableViewCell { 

weak var delegate: MyCellDelegate? 

@IBAction func deleteButtonTapped(_ sender: Any) { 
    delegate?.didDelete(cell: self) 
    } 
} 

在我的ViewController我做了代表和数据源实现:

extension ViewController: UITableViewDataSource { 

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

     switch editingStyle { 
     case .delete: 
      tableView.beginUpdates() 
      tableView.deleteRows(at:[indexPath], with: .fade) 
      tableView.endUpdates() 
     default: 
      break 
     } 
    } 
} 

extension ViewController: MyCellDelegate { 

    func didDelete(cell: MyCell) { 

     guard let index = tableView.indexPath(for: cell) else { 
      return 
     } 

     myArray?.remove(at: index.row) 
     self.tableView(self.tableView, commit: .delete, forRowAt: index) 
    } 
}