我在故事板中创建了Tableview。当我尝试删除tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]
中的单元格时,删除后表格不会立即重新加载。它也将在数据库中成功删除。
当我关闭视图并返回时,它将被更新。我哪里错了?
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 :(得分:1)
1)您必须检查您的tableview从最终任务值获取数据。 2)请在进行删除行动时请不使用开始更新,开始结束更新方法请在这里显示的用户重新加载方法。
finaltasktableview.reloadData()
3)我不明白为什么你在这里定义url请求? 4)您的请求不使用此方法的任何参数或删除逻辑参数也不包括在内。检查您的请求响应再次填写您要删除的数据。
答案 1 :(得分:0)
1)我同意finaltasktableview.reloadData() 对于相对较小的桌子来说更好。
2)您发出网络呼叫,但第一个DispatchQueue.main.async(执行:{
没用。