我使用的Xcode 8刪除一行,並迅速3.雨燕3.0無法從一個UITableView
我得到一個斷言失敗時,我嘗試從一個UITableView刪除行。在
斷言故障 - [UITableView的_endCellAnimationsWithContext:],/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3599.5/UITableView.m:1610
終止應用程序由於未捕獲異常'NSInternalInconsistencyException',原因:'無效更新:第0節中的行數無效。更新(25)後現有節中包含的行數必須等於更新前該節中包含的行數(25),加上或減去從該部分插入或刪除的行數(0插入,1刪除),加上或減去移入或移出該部分的行數(移入0,移出0)。
代碼:
// create a cell for each table view row
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// create a new cell if needed or reuse an old one
let cell:UserCell = self.tableView.dequeueReusableCell(withIdentifier: "tblCell") as! UserCell!
cell.titleLabel.text = self.animals[(indexPath as NSIndexPath).row]
cell.btnDelete.addTarget(self, action:#selector(ViewController.buttonClicked(sender:)), for: UIControlEvents.touchUpInside);
return cell
}
func buttonClicked(sender:UIButton) {
if let superview = sender.superview {
if let cell = superview.superview as? UserCell {
if let indexPath = self.tableView.indexPath(for: cell){
print("row = ",indexPath.row)
self.tableView.beginUpdates()
self.tableView.deleteRows(at: [indexPath], with: .left)
self.tableView.endUpdates()
self.animals.remove(at:indexPath.row)
}
}
}
}
我剛開始學習迅速,請幫助我。
必須在結束更新之前刷新數據源。嘗試在self.tableView.endUpdates()前調用'self.animals.remove(at:indexPath.row)'' – akdsouza
[iOS8 Swift:deleteRowsAtIndexPaths crashes]可能的重複(http://stackoverflow.com/questions/25588779/ ios8-swift-deleterowsatindexpaths -crashes) – pedrouan
@pedrouan「deleteRowsAtIndexPaths」不存在於swift 3中。 –