删除单元格后,swift tableview无法重新加载
我在故事板中创建了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]
}
1)你必须检查你的tableview从最终任务值中获取数据。 2)请在执行删除操作的时候请不要使用开始更新,并且开始结束更新方法请用这里显示的用户重新装入方法。
finaltasktableview.reloadData()
3)我不明白你为什么在这里定义url请求? 4)您的请求不使用此方法的任何参数或删除逻辑参数也不包括在内。检查你的请求响应再次填写你想要删除的数据。
1)是finalTasktableView从finaltaskvalue获取值3)&4)我在这里发送参数来删除mysql中的行(我在Query中隐藏了参数)。在数据库中删除成功。唯一的问题是表不重装。你的数组中的 – swiftuser123
删除那个值?通过调试来检查。也请尝试这一个,请检查您的网点,并且还委托和数据源。并试图打破网点并重新加入他们。并在你的代码中添加类名:UITableviewdelegate,UItableviewDatasource。 –
是从数组中删除。我确实打破了网点并重新加入。仍然是一样的 – swiftuser123
1)我同意finaltasktableview.reloadData() 是比较小的表更好。
2)你发出一个网络电话,但第一DispatchQueue.main.async(执行:{
是没用的
使用'deleteRows后不要重新加载表视图(at'此。方法不会更新用户界面,Btw删除'begin-/endUpdates()',两行都没有效果,派遣'dataTask'到** main **线程的目的是什么?'dataTask'无论如何都使用自己的线程 – vadian