2017-08-15 82 views
1

我在故事板中創建了Tableview。當我嘗試刪除tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]中的單元格時,表格不會在刪除後立即重新加載。它也會在數據庫中成功刪除。 當我關閉視圖並回來時,它將被更新。我哪裏錯了?刪除單元格後,swift tableview無法重新加載

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { 


    let deleteAction = UITableViewRowAction(style: .normal, title: "Löschen") { (rowAction, indexPath) in 


      let Info: NSDictionary = self.finaltaskValue[indexPath.item] as! NSDictionary 
      let pwid = Info["pwid"] as! String 
      self.finaltaskValue.remove(at: indexPath.row) 
      self.finalTasktableView.beginUpdates() 
      self.finalTasktableView.deleteRows(at: [indexPath], with: .none) 
      self.finalTasktableView.endUpdates() 


      let url = URL(string: "...php") 

      var request = URLRequest(url: url!) 
      request.httpMethod = "POST" 
      let body = "parameters" 

      request.httpBody = body.data(using: .utf8) 

      URLSession.shared.dataTask(with: request) { data, response, error in 

       if error == nil { 

        DispatchQueue.main.async(execute: { 

         do{ 
          let json = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary 


          guard let parseJSON = json else { 
           print("") 
           return 
          } 

          DispatchQueue.main.async(execute: { 
          self.finalTasktableView.reloadData() 
          }) 

         }catch { 
          //print("Caught an error: \(error)") 
          DispatchQueue.main.async(execute: { 
           let message = "Server ist Offline! Wir arbeiten mit hochdruck dran alles zu reparieren" 

         } 
        }) 

       }else { 

        DispatchQueue.main.async(execute: { 
         let message = error!.localizedDescription 


       } 

       }.resume() 
     } 


    deleteAction.backgroundColor = colorDarkGreen 
    return [deleteAction] 
} 
+0

使用'deleteRows後不要重新加載表視圖(at'此。方法不會更新用戶界面,Btw刪除'begin-/endUpdates()',兩行都沒有效果,派遣'dataTask'到** main **線程的目的是什麼?'dataTask'無論如何都使用自己的線程 – vadian

回答

0

1)你必須檢查你的tableview從最終任務值中獲取數據。 2)請在執行刪除操作的時候請不要使用開始更新,並且開始結束更新方法請用這裏顯示的用戶重新裝入方法。

finaltasktableview.reloadData() 

3)我不明白你爲什麼在這裏定義url請求? 4)您的請求不使用此方法的任何參數或刪除邏輯參數也不包括在內。檢查你的請求響應再次填寫你想要刪除的數據。

+0

1)是finalTask​​tableView從finaltaskvalue獲取值3)&4)我在這裏發送參數來刪除mysql中的行(我在Query中隱藏了參數)。在數據庫中刪除成功。唯一的問題是表不重裝。你的數組中的 – swiftuser123

+0

刪除那個值?通過調試來檢查。也請嘗試這一個,請檢查您的網點,並且還委託和數據源。並試圖打破網點並重新加入他們。並在你的代碼中添加類名:UITableviewdelegate,UItableviewDatasource。 –

+0

是從數組中刪除。我確實打破了網點並重新加入。仍然是一樣的 – swiftuser123

0

1)我同意finaltasktableview.reloadData() 是比較小的表更好。

2)你發出一個網絡電話,但第一DispatchQueue.main.async(執行:{

是沒用的

相關問題