2017-06-07 72 views
-1

我有下面的代碼,我嘗試刪除行。當行不節最後一切正常,但是當它是最後一個部分 - 應用程序的崩潰任務:刪除部分:)

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == .delete { 
     if let item = shopList.getItem(index: indexPath) { 
      shopTableView.beginUpdates() 

      let indexSet = NSMutableIndexSet() 
      indexSet.add(indexPath.section - 1) 
      shopTableView.deleteRows(at: [indexPath], with: .fade) 
      //shopTableView.deleteSections(indexSet as IndexSet, with: UITableViewRowAnimation.automatic) 



      shopList.remove(item: item) 

      shopTableView.endUpdates() 

     } 
    } 
} 

我有錯誤

「NSInternalInconsistencyException」,理由是:「無效的更新:無效>部分的數量。更新(1)後,表視圖>中包含的部分數量必須等於更新前的表格視圖中包含的部分數量(2),加上或減去>插入或刪除的部分數量(0插入,0刪除)。'

有沒有標準的方法來做到這一點?

回答

0

我改變了我下面的代碼和它的作品

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == .delete { 
     if let item = shopList.getItem(index: indexPath) { 
      shopTableView.beginUpdates() 
      let sectionStatus = shopList.remove(item: item) 
      shopTableView.deleteRows(at: [indexPath], with: .fade) 
      if sectionStatus == .sectionEmpty { 
       let indexSet = IndexSet(integer: indexPath.section) 
       shopTableView.deleteSections(indexSet, with: UITableViewRowAnimation.automatic) 
      } 
      shopTableView.endUpdates() 
      totalLabel.update(value: shopList.total) 

     } 
    } 

}