【发布时间】:2017-04-19 11:57:40
【问题描述】:
我有一个UITableViewCell 和一个BEMCheckBox,我想在按下点按时删除单元格,这是我的代码:
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 移出)。'
【问题讨论】:
-
MenuViewController().products.removeObject(forKey: "Product\(index!.row)")这是创建一个全新的MenuViewController对象吗?您能否检查对象是否已正确移除?
标签: swift xcode uitableview