我有一个UITableViewCell和一个BEMCheckBox,当按下did时,我想删除这个单元格--这里是我的代码:
func didTap(_ checkBox: BEMCheckBox) {
let index = tableView?.indexPath(for: self)
MenuViewController().products.removeObject(forKey: "Product\(index!.row)") // removes the cell from the database of the tableview
tableView?.deleteRows(at: [index!], with: .fade)
}下面是我如何获得tableView的方法
extension UIView {
func parentView<T: UIView>(of type: T.Type) -> T? {
guard let view = self.superview else {
return nil
}
return (view as? T) ?? view.parentView(of: T.self)
}
}
extension UITableViewCell {
var tableView: UITableView? {
return self.parentView(of: UITableView.self)
}
}我得到了以下错误:
由于未命名的异常“NSInternalInconsistencyException”终止应用程序,原因是:“无效更新:节0中的无效行数。更新(2)之后包含在现有节中的行数必须等于更新(2)之前包含在该节中的行数,加上或减去从该节插入或删除的行数(0插入,1已删除),加上或减去移入或移出该节的行数(0移动,0移出)。”
发布于 2017-04-19 12:08:08
您需要通知表视图您要修改的项目数:
tableView?.beginUpdates()
// Perform the item and cell removal
tableView?.endUpdates()始终确保插入/删除数据源中与表视图单元格数相同的项数。
您可以检查解耦这里。
https://stackoverflow.com/questions/43495091
复制相似问题