删除单元格后没有重新加载swift tableview

时间:2017-08-15 08:10:01

标签: ios swift uitableview

我在故事板中创建了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]
}

2 个答案:

答案 0 :(得分:1)

1)您必须检查您的tableview从最终任务值获取数据。 2)请在进行删除行动时请不使用开始更新,开始结束更新方法请在这里显示的用户重新加载方法。

finaltasktableview.reloadData()

3)我不明白为什么你在这里定义url请求? 4)您的请求不使用此方法的任何参数或删除逻辑参数也不包括在内。检查您的请求响应再次填写您要删除的数据。

答案 1 :(得分:0)

1)我同意finaltasktableview.reloadData() 对于相对较小的桌子来说更好。

2)您发出网络呼叫,但第一个DispatchQueue.main.async(执行:{

没用。